Ich habe einen funktionierenden Schalter und einen Schaltzustand, der verfolgt, welcher Schalter mit der Zeilennummer des Indexpaths und bool, die in einem Wörterbuch gespeichert sind, eingeschaltet wird. Das funktioniert zwar nur für eine Sektion. Ich habe eine schwierige Zeit, das verhindert, dass verschütten zum nächsten Abschnitt über, wie hier zu sehen:Zwei Abschnitte mit einem U-Schalter? - Swift
Section 0 Row 3 switch turned on
Section 1 Row 3 switch turned on without me pressing it.
Gibt es eine Möglichkeit, nur Schalter behält für diesen bestimmten Abschnitt? Im Moment benutze ich zwei Prototyp-Zellen, eine für die Daten, die ich zeige, die nur einen Schalter und die andere Zelle für die Anzeige des Abschnitts-Headers enthält.
Hier einige der Code, den ich zu sehen, wäre hilfreich, erraten, was ich niedergeschlagen:
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("advCell", forIndexPath: indexPath) as! advDataCell
cell.advDelegate = self
switch(indexPath.section) {
case 0:
cell.lblCategoryItem.text = foodCategories[indexPath.row]["name"]
case 1:
cell.lblCategoryItem.text = activitiesCategories[indexPath.row]["name"]
default:
return cell
}
if advSwitchStates[indexPath.row] != nil {
cell.advOnOffSwitch.on = advSwitchStates[indexPath.row]!
}
else {
cell.advOnOffSwitch.on = false
}
cell.advOnOffSwitch.on = advSwitchStates[indexPath.row] ?? false
return cell
}
func switchCell(advSwitchCell: advDataCell,didChangeValue value: Bool) {
let indexPath = tableView.indexPathForCell(advSwitchCell)!
print("This advanced filter controller has received the switch event.")
advSwitchStates[indexPath.row] = value
}
Und was ich bin mit der Schaltzustände speichern:
var advSwitchStates = [Int: Bool]()
Shop ein Array von NSMutableIndexSets. Der Index für das Array ist die Abschnittsnummer. Wenn ein Schalter eingeschaltet ist, füge die Zeile zum relevanten indexSet hinzu. – Paulw11