1

Referance Link that I have used

Here is my code

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

Code with Custom Cell

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 Calss

class ProductTblCell: UITableViewCell {
    @IBOutlet weak var lblProductTitle: UILabel!
}

Can you please someone tell me what's going Wrong? Thanks in advance

Output

enter image description here

Nikunj Kumbhani
  • 3,758
  • 2
  • 26
  • 51

1 Answers1

2

It was, as tends to be the case, my mistake

After searching a lot I realized the issue.

The problem was mostly we all set the cell's selectionStyle property to .none from Storyboard or programmatically to remove the background color of the cell during the selection.

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

Set the Selection Style from Storyboard

enter image description here

You can also Set in table views cellForRowAt method

cell.selectionStyle = .none

To remove or change the background color of the cell for the selection you need to use this override method in UITableViewCell

override func setSelected(_ selected: Bool, animated: Bool) {
    super.setSelected(selected, animated: animated)
    self.backgroundColor = selected ? .gray : .white
}
Nikunj Kumbhani
  • 3,758
  • 2
  • 26
  • 51