Ich habe eine Funktion innerhalb eines Protokolls, das eine TableViewcell als Argument verwendet.Wie kann ich meine TableView-Zelle daran hindern, den Knopf darin wieder zu verwenden?
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)
}
ich dann gehen zu meinem Viewcontroller und die Delegaten implementieren und es ist Funktion, die das Bild einer Taste zu ändern ist, wenn angezapft. Das "goingSelected" ist ein grünes Bild und das "goingDeselected" ist ein rotes Bild.
Das alles funktioniert gut, wenn angezapft der Knopf einer Zelle von rot nach grün und umgekehrt geht. Wenn die Zelle jedoch erneut verwendet wird, bleibt der Schaltflächenstatus der Zelle bestehen und wird für die neue Zeile wiederverwendet, die in die Ansicht gelangt. Gibt es eine Möglichkeit, dies zu verhindern?
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)
}
}
}
Mögliche Duplikat von [Wie UITableView zu verhindern, dass die Wiederverwendung individuelle Zellen Swift] (https://stackoverflow.com/ Fragen/37938809/how-to-verhindern-uitableview-from-reuse-custom-cells-swift) –
Sie wollen nicht vermeiden, Zellen wieder zu verwenden. Das ist nicht die richtige Lösung. – rmaddy