Ich habe mehrere Abschnitte in meinem UITableView
, die jeweils eine andere Nummer UITableViewCells
haben.Wie protokolliere ich Zellen, die mit NSIndexPath ausgewählt wurden?
Ich möchte die Zellen, die für jeden Abschnitt ausgewählt wurden, verfolgen und ein Bild für die Zellen anzeigen, die ausgewählt wurden.
So etwa dachte ich sie in einem Array zu speichern:
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
someArray.append(indexPath)
}
und dann das Bild für Zellen anzeigt, die ausgewählt wurden:
for indices in self.someArray {
if indices == indexPath {
cell.button.setImage(UIImage(named: "selected"), forState: UIControlState.Normal)
} else {
cell.button.setImage(UIImage(named: "unselected"), forState: UIControlState.Normal)
}
}
Ich würde es auch machen möchte so dass nur eine Zelle pro Abschnitt ausgewählt werden kann und dass jede Auswahl für jeden Abschnitt erhalten bleibt.
Die Auswahl bleibt nicht so, wie sie sollte. Jedes Mal, wenn ich eine Auswahl in Abschnitt 0 für eine Zeile anwähle, wählt es auch den gleichen Zeilenindex für meine anderen Abschnitte aus.
Wie behebe ich das?
Sinn macht. Also mag xcode diese Zeile nicht: dataModel [indexPath.section] = dataModel [indexPath.section] .map ({$ 0.isSelected = false}) –
Außerdem bekomme ich: fataler Fehler: Index außerhalb des Bereichs für if dataModel [indexPath.section] [indexPath.row] .isSelected { –
Sorry, ich habe den Code nicht selbst ausgeführt! Sie können die Karte durch eine for-Schleife ersetzen, die durch jedes Element im Unterfeld führt und sicherstellen, dass die Auswahl aufgehoben wird. Was den Index außerhalb des Bereichs betrifft, müssen Sie möglicherweise tableView: numberOfSectionsInTableView implementieren, um die korrekte Anzahl von Abschnitten zurückzugeben, ähnlich wie bei tableView: numberOfRowsInSection. Beide sollten Werte basierend auf der .count Eigenschaft Ihres dataModels zurückgeben und auf diese Weise sollten Sie keinen Index außerhalb des Bereichs bekommen ... – Undrea