所以我想改變一個布爾值在我的項目中使用UISwitch。交換機位於我的單元格右側,並通過Interface Builder添加了約束條件。UISwitch約束和動畫中斷tableview.reloadData()
我已經裝配了開關來調用switchChanged
方法,該方法設置了bool值,然後重新加載tableView以反映更改後的值。
開關正常工作,設置切換時的布爾值。但是,當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()
線打破了開關。除開關位置和動畫以外的其他一切工作。任何幫助表示讚賞!
編輯:
switchChanged()
該方法是在我的視圖控制器實現。
這裏是上面提到的約束:
你需要證明你已經添加的約束。另外,switchChanged()方法在哪裏實現?在單元格或視圖控制器中? – Abizern
'switchChanged()'發生在視圖控制器 – SpacemanDeMars
我沒有得到你的問題。 –