gpt4 book ai didi

ios - UISwitch 无法正常工作

转载 作者:行者123 更新时间:2023-11-29 01:32:28 25 4
gpt4 key购买 nike

在我的代码中,我通过 NSUserDefaults 存储了 UISwitch 状态。但是,当窗口重新加载时,所有 UISwitch 的 都会打开。这是我的代码片段:

   @IBAction func switchState(sender: AnyObject) {

let standardDefaults = NSUserDefaults.standardUserDefaults()
if mySwitch.on{
standardDefaults.setObject("On", forKey: "switchKey")
}
else{
standardDefaults.setObject("Off", forKey: "switchKey")
}
standardDefaults.synchronize()

}

override func awakeFromNib() {
super.awakeFromNib()
let standardDefaults = NSUserDefaults.standardUserDefaults()
self.mySwitch.on = standardDefaults.stringForKey("switchKey") == "On"
}

我相信它在 awakeFromNib 部分,但我无法弄清楚。请帮忙。

谢谢。

最佳答案

您的实现中存在冗余代码。您可以直接将 bool 保存在 NSUserDefaults 中,而不是存储 String 并稍后对其进行操作。

这是你应该做的:

保存数据时:

@IBAction func switchState(sender: AnyObject) {
NSUserDefaults.standardUserDefaults().setBool(mySwitch.on, forKey: "switchKey")
}

检索数据时:

override func awakeFromNib() {
super.awakeFromNib()
self.mySwitch.on = NSUserDefaults.standardUserDefaults().boolForKey("switchKey")
}

此外,值得注意的是 NSUserDefaults 开始时为空,因此请求 key 返回 nil,并在 上调用 boolValue nil 返回 false。如果您希望您的开关以默认值开始,您可以在 appDidFinishLaunching 中实现:

NSUserDefaults.standardUserDefaults().registerDefaults(["switchKey" : true])

关于ios - UISwitch 无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33314463/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com