J'ai une fonction dans un protocole qui prend un TableViewcell comme argument.Comment puis-je empêcher ma cellule tableView de réutiliser le bouton à l'intérieur?
protocol GoingButtonDelegate {
func goingButtonPressed(cell: TableViewCell)
}
class TableViewCell: UITableViewCell {
// Outlets
@IBOutlet weak var goingButton: UIButton!
var delegate: GoingButtonDelegate?
@IBAction func goingButtonTapped(_ sender: Any) {
delegate?.goingButtonPressed(cell: self)
}
Je puis aller à mon ViewController et mettent en place le délégué et sa fonction, qui est de changer l'image d'un bouton quand on tape dessus. Le "goingSelected" est une image verte et le "goingDeselected" est une image rouge.
Tout cela fonctionne très bien, lorsque vous appuyez sur le bouton d'une cellule passe du rouge au vert et vice versa. Cependant, lorsque la cellule est réutilisée, l'état du bouton de la cellule persiste et est réutilisé pour la nouvelle ligne qui entre dans la vue. Y at-il moyen d'empêcher que cela ne se produise?
extension ViewController: GoingButtonDelegate {
func goingButtonPressed(cell: TableViewCell) {
cell.goingButton.isSelected = !cell.goingButton.isSelected
if cell.goingButton.isSelected == true {
cell.goingButton.setImage(UIImage(named: "goingSelected"), for: UIControlState.selected)
} else if cell.goingButton.isSelected == false {
cell.goingButton.setImage(UIImage(named: "goingDeselected"), for: UIControlState.normal)
}
}
}
double possible de [Comment éviter UITableView de cellules réutilisation personnalisées Swift] (https://stackoverflow.com/ questions/37938809/how-to-prevent-uitableview-from-réutilisation-custom-cells-swift) –
Vous ne voulez pas éviter de réutiliser des cellules. Ce n'est pas la bonne solution. – rmaddy