2016-07-05 4 views
-1

Jede 8. Zeile wiederholt sich, wenn ich versuche, eine Aktion für die Zelle auszuführen.Die Wiederverwendung von Zellen in UITableViewCell kann nicht verhindert werden: Swift

In der Zelle verwende ich eine Schaltfläche, um den Wert eines Etiketts festzulegen. Aber der Wert für eine Zelle ist wieder 8 Zellen darunter. Gibt es eine Möglichkeit, dies zu verhindern?

+0

Setzen Sie das Etikett jedes Mal zurück, wenn Sie die Zelle laden. Also bevor Sie cell.configureCell1 aufrufen. Setzen Sie die Beschriftung zurück auf cell.yourlabel.text = "" – Devster101

+0

Sie könnten auch '-prepareForReuse:' in der Zellenunterklasse überschreiben, um das gleiche Ergebnis zu erhalten. –

+0

@RichTolley - prepareForReuse sollte nicht dafür verwendet werden. Hier ist ein Zitat aus der offiziellen UITableView-Dokumentation. "Aus Leistungsgründen sollten Sie nur Attribute der Zelle zurücksetzen, die nicht mit dem Inhalt in Zusammenhang stehen, z. B. Alpha-, Bearbeitungs- und Auswahlstatus." Hier ist ein Link - https://developer.apple.com/library/ios/documentation/UIKit/Reference/UITableViewCell_Class/#//apple_ref/occ/instm/UITableViewCell/prepareForReuse – itskoBits

Antwort

1

Im Inneren der Zelle, verwende ich eine Taste, um den Wert eines

Model-View-Controller

Label zu setzen! Das Problem ist, wie Sie sagen, dass die Zelle in einer anderen Reihe wiederverwendet wird. Die Lösung besteht darin, den neuen Label-Wert im Modell zu speichern, wenn die Schaltfläche verwendet wird, damit das nächste Mal, wenn configureCell1 aufgerufen wird, den richtigen Wert für diese Zeile aus dem Modell extrahiert. Nie Verwenden Sie die Zelle selbst für die Speicherung von allem! Es ist nur eine Ansicht. Nur im Modell lagern.

Verwandte Themen