allowsMultipleSelectionDuringEditing no funciona con una celda personalizada de UITableView.
Aquí está mi código:
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
}
}
Funciona bien para la celda predeterminada UITableViewCell
. Pero si hago lo mismo con una celda personalizada UITableViewCell
, entonces la selección no funciona.
Código con celda personalizada:
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
}
}
Clase ProductTblCell:
class ProductTblCell: UITableViewCell {
@IBOutlet weak var lblProductTitle: UILabel!
}
¿Alguien puede decirme qué está saliendo mal? Gracias de antemano.
Resultado:
davy.ai
La selección no funciona para la
UITableViewCell
personalizada porqueUITableViewCell
es una subclase deUIView
. Cuando creas unaUITableViewCell
personalizada, agregas subvistas a la vista de contenido de la celda. Esto significa que el estilo de selección de la celda se aplica a la vista de contenido, no a las subvistas.Para solucionar este problema, puedes sobrescribir el método
setSelected
en tu clase personalizada deUITableViewCell
y cambiar manualmente el estilo de selección de tus subvistas cuando la celda está seleccionada. Aquí tienes un ejemplo de implementación del métodosetSelected
:En esta implementación, cambiamos el color del texto de
lblProductTitle
y el color del fondo de la vista de contenido para indicar el estado de selección de la celda. Puedes personalizar esta implementación según tu caso de uso específico.Referencia: Stack Overflow