Swift:需要相互更新的自定义tableView单元格的切换设置

时间:2018-03-26 09:28:18

标签: swift uitableview uiswitch

我一直在抨击我认为几天之前简单的代码。

我有一个包含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单元的细微差别?我确定这一定是直截了当的,但我没有看到它!感谢您的任何指示...

0 个答案:

没有答案