Also versuche ich einen Bool-Wert mit einem UISwitch in meinem Projekt zu ändern. Der Schalter befindet sich auf der rechten Seite meiner Zelle und wird durch Einschränkungen, die über den Interface Builder hinzugefügt wurden, gehalten.UISwitch Constraints und Animation Pause auf Tableview.ReloadData()
Ich habe den Schalter geriggt, um eine switchChanged
Methode aufzurufen, die den Bool-Wert einstellt, und lädt dann die TableView neu, um den geänderten Wert widerzuspiegeln.
Der Switch funktioniert ordnungsgemäß und legt den Bool-Wert beim Umschalten fest. Wenn die switchChanged
Methode jedoch self.tableView.reloadData()
aufruft, wird der Schalter oben links in der Zelle neu positioniert und animiert nicht mehr, obwohl es weiterhin ordnungsgemäß funktioniert. Irgendetwas bricht den Schalter, aber als unerfahrener iOS-Entwickler bin ich mir nicht sicher, wie ich mit der Fehlersuche beginnen soll. Hier
ist der entsprechende Code:
cellSwitch.addTarget(self, action: #selector(self.switchChanged),
forControlEvents: UIControlEvents.TouchUpInside)
Und dann:
func switchChanged(sender: UISwitch) -> Void {
print("Switch changed to \(sender.on).")
if sender.on {
self.acknowledged = "confirmed"
} else {
self.acknowledged = "conflicted"
}
tableView.reloadData()
}
Irgendwie ist der tableView.reloadData()
Linie den Schalter bricht. Alles andere funktioniert außer der Schalterposition und Animation. Jede Hilfe wird geschätzt!
Edit:
Die switchChanged()
Methode wird in meiner Ansicht-Controller implementiert.
Hier sind die Einschränkungen oben erwähnt:
Sie müssen die Einschränkungen zeigen, dass Sie hinzugefügt haben. Wo wird auch die 'switchChanged()' Methode implementiert? In der Zelle oder der View-Controller? – Abizern
'switchChanged()' passiert in der View-Controller – SpacemanDeMars
Ich bekomme Ihre Frage nicht. –