如何保留 UISwitch 状态

Posted

技术标签:

【中文标题】如何保留 UISwitch 状态【英文标题】:How to retain UISwitch state 【发布时间】:2014-08-22 00:15:32 【问题描述】:

我刚刚在我的设置菜单的一个单元格中添加了一个 UISwitch,当我离开视图时,我遇到了开关状态恢复为打开的问题。

我已尝试添加此代码:

    override func viewDidAppear(animated: Bool) 
    if autoAdjust == true 
        dupSwitch.on = true
     else 
        dupSwitch.on = false
    

虽然这确实有效,但并不理想,因为当视图出现时,状态之间存在明显的跳跃。

当用户离开视图时,如何确保开关保持在用户离开的任何位置?

【问题讨论】:

你使用什么样的tableView内容?静态单元还是动态原型?如果是后者,您应该在tableView:cellForRowAtIndexPath: 中声明dupSwitch.on = autoAdjust 【参考方案1】:

当用户离开视图时,如何确保开关保持在用户离开的任何位置?

将开关的当前状态存储在模型类中(在模型-视图-控制器意义上)。 autoAdjust 变量的值应保存在不会随视图一起卸载的对象中 - 即在您的模型类中。

当视图即将出现时,读取开关的当前状态,并将dupSwitch.on设置为模型中存储的状态。

注意:为避免显示切换过程,请将您的逻辑从viewDidAppear 移至viewWillAppear。您的代码也可以简化 - 您不需要条件:

override func viewWillAppear(animated: Bool) 
    dupSwitch.on = autoAdjust

【讨论】:

由于我一直在处理其他事情,所以花了我一段时间来查看您的回复,但您解决了我的问题,非常感谢!

以上是关于如何保留 UISwitch 状态的主要内容,如果未能解决你的问题,请参考以下文章

如何从 SWIFT 3 中的另一个 ViewController 检查 UISwitch 的状态?

在 UITests 中获取 UISwitch 状态/值

如何以编程方式切换uiswitch按钮

如何在Objective-C中以编程方式而不是由用户控制UISwitch的状态?

在 TableViewCell 中保持 UISwitch 的状态:Swift

保存多个 UISwitch 状态不同的 Views