Так что я пытаюсь изменить значение bool с помощью UISwitch в моем проекте. Переключатель расположен справа от моей ячейки и удерживается на месте с ограничениями, добавленными через Interface Builder.Ограничения UISwitch и анимация break на tableview.reloadData()
Я подключил коммутатор для вызова метода switchChanged
, который устанавливает значение bool, а затем перезагружает таблицуView для отражения измененного значения.
Коммутатор работает правильно, устанавливая значение bool при его переключении. Однако, когда метод switchChanged
вызывает self.tableView.reloadData()
, коммутатор перемещается в верхнем левом углу ячейки, и он больше не анимируется, хотя он все еще функционирует должным образом. Что-то ломает коммутатор, но как начинающий разработчик iOS, я не уверен, как начать поиск и устранение неполадок.
Вот соответствующий код:
cellSwitch.addTarget(self, action: #selector(self.switchChanged),
forControlEvents: UIControlEvents.TouchUpInside)
И потом:
func switchChanged(sender: UISwitch) -> Void {
print("Switch changed to \(sender.on).")
if sender.on {
self.acknowledged = "confirmed"
} else {
self.acknowledged = "conflicted"
}
tableView.reloadData()
}
Как-то tableView.reloadData()
линия ломает переключатель. Все остальное работает, кроме положения переключателя и анимации. Любая помощь приветствуется!
Edit:
Метод switchChanged()
реализован на мой взгляд контроллера.
Вот ограничения, упомянутые выше:
Вы должны показать ограничения, которые вы добавили. Кроме того, где реализован метод 'switchChanged()'? В ячейке или контроллере представления? – Abizern
'switchChanged()' происходит в контроллере представления – SpacemanDeMars
. Я не получаю ваш вопрос. –