allowsMultipleSelectionDuringEditing 不适用于自定义 UITableviewCell
allowsMultipleSelectionDuringEditing not working with Custom UITableviewCell
我用过的参考
这是我的代码
class ViewController: UITableViewController{
override func viewDidLoad() {
super.viewDidLoad()
tableView.allowsMultipleSelectionDuringEditing = true
tableView.setEditing(true, animated: false)
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
cell.textLabel?.text = "\(indexPath.row)"
return cell
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 10
}
}
It was Work fine for the default UITableViewCell
. But if I have do the same thing with Custom UITableViewCell
then selection is not worling
使用自定义单元格编码
class ViewController: UITableViewController{
override func viewDidLoad() {
super.viewDidLoad()
tableView.allowsMultipleSelectionDuringEditing = true
tableView.setEditing(true, animated: false)
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "customcell", for: indexPath) as! ProductTblCell
cell.lblProductTitle?.text = "\(indexPath.row)"
return cell
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 10
}
}
ProductTblCell 调用
class ProductTblCell: UITableViewCell {
@IBOutlet weak var lblProductTitle: UILabel!
}
你能告诉我哪里出了问题吗?提前致谢
输出
通常情况下,这是我的错误
经过大量搜索,我意识到了这个问题。
问题主要是我们都将单元格的 selectionStyle
属性 设置为 .none
从 Storyboard 或以编程方式在选择过程中删除单元格的背景颜色。
Keep in mind that if you want to use the default selection or
multiple selections feature during the editing must you need to follow this
从故事板设置选择样式
您也可以在table视图中设置cellForRowAt
方法
cell.selectionStyle = .none
要删除或更改所选单元格的背景颜色,您需要在 UITableViewCell
中使用此覆盖方法
override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
self.backgroundColor = selected ? .gray : .white
}
我用过的
这是我的代码
class ViewController: UITableViewController{
override func viewDidLoad() {
super.viewDidLoad()
tableView.allowsMultipleSelectionDuringEditing = true
tableView.setEditing(true, animated: false)
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
cell.textLabel?.text = "\(indexPath.row)"
return cell
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 10
}
}
It was Work fine for the default
UITableViewCell
. But if I have do the same thing with CustomUITableViewCell
then selection is not worling
使用自定义单元格编码
class ViewController: UITableViewController{
override func viewDidLoad() {
super.viewDidLoad()
tableView.allowsMultipleSelectionDuringEditing = true
tableView.setEditing(true, animated: false)
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "customcell", for: indexPath) as! ProductTblCell
cell.lblProductTitle?.text = "\(indexPath.row)"
return cell
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 10
}
}
ProductTblCell 调用
class ProductTblCell: UITableViewCell {
@IBOutlet weak var lblProductTitle: UILabel!
}
你能告诉我哪里出了问题吗?提前致谢
输出
通常情况下,这是我的错误
经过大量搜索,我意识到了这个问题。
问题主要是我们都将单元格的 selectionStyle
属性 设置为 .none
从 Storyboard 或以编程方式在选择过程中删除单元格的背景颜色。
Keep in mind that if you want to use the default selection or multiple selections feature during the editing must you need to follow this
从故事板设置选择样式
您也可以在table视图中设置cellForRowAt
方法
cell.selectionStyle = .none
要删除或更改所选单元格的背景颜色,您需要在 UITableViewCell
override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
self.backgroundColor = selected ? .gray : .white
}