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
}