我一直在抨击我认为几天之前简单的代码。
我有一个包含UISwitch的自定义单元格的动态tableview。我需要做到这一点,因此这些细胞具有依赖性,以至于它们不能同时“开始”。同时(即它们可以是:关闭,关闭,开关,但不是开启)。
我有一个简单的关闭链接到一个'切换'更新基础数据结构中的标志的操作,我已经验证了这是按预期工作的。
但是,我无法更新UI以显示相关更改,即如果我将flag1切换为on,则将flag2设置为off但它不会将链接到flag2的开关更改为off。
我已尝试在触发的动作闭包中执行此操作,并通过以下方式对变量使用属性观察器,但UI中的开关永远不会像我期望的那样更新。
var flag1 = true {
didSet {
print("flag1 set to \(flag1)") //always prints expected value
let indexPath = IndexPath(row: flag1Details.row, section: flag1Details.section)
if let flag1Cell = tableView(self.tableView, cellForRowAt: indexPath) as? SwitchCell {
flag1Cell.rightSwitch.setOn(flag1, animated: true) //also tried setting .isOn = flag1
}
}
}
var flag2 = false {
didSet {
print("flag2 set to \(flag2)") //always prints expected value
let indexPath = IndexPath(row: flag2Details.row, section: flag2CellDetails.section)
if let flag2Cell = tableView(tableView, cellForRowAt: indexPath) as? SwitchCell {
flag2Cell.rightSwitch.setOn(flag2, animated: true)
}
}
}
奇怪的是,我使用静态单元模拟了这一点,我可以使用IBOutlet设置开关的值而没有任何问题,所以我想它必须与我如何识别\访问动态单元格有关?
我是否犯了一个明显的错误,我是盲目的,或者是否有一些我不知道的动态tableView单元的细微差别?我确定这一定是直截了当的,但我没有看到它!感谢您的任何指示...