【发布时间】:2015-04-17 18:43:28
【问题描述】:
当我从一个视图控制器移动到另一个视图控制器时,第一个控制器上的开关会自行重置并且不会保留其状态。 查看其他控制器后返回时如何使其保存状态?以及如何让它在关闭应用程序后保存其状态。我查看了各种 stackOverflow 问题和响应以及苹果文档,但似乎没有任何效果。
这是我的具有开关的视图控制器的类。
class Days: UIViewController {
@IBOutlet weak var switchButton: UISwitch!
var switchState = true
let switchKey = "switchState"
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
@IBAction func saveSwitchPressed(sender:AnyObject) {
if self.switchButton.on {
self.switchState = true
NSUserDefaults.standardUserDefaults().setBool(self.switchState, forKey: switchKey)
NSUserDefaults.standardUserDefaults().synchronize()
println(NSUserDefaults.standardUserDefaults().boolForKey(switchKey))
} else {
self.switchState = false
NSUserDefaults.standardUserDefaults().setBool(self.switchState, forKey: switchKey)
NSUserDefaults.standardUserDefaults().synchronize()
println(NSUserDefaults.standardUserDefaults().boolForKey(switchKey))
}
}
}
我是 Swift 和 Xcode 的初学者。提前感谢您的时间和帮助:)
【问题讨论】:
-
您已将状态保存到 NSUserDefaults 但在视图加载时,您是否从 NSUserDefaults 获取值并根据该值更新切换开关?
-
如果你返回到同一个实例,你根本不需要保存它的状态。你回到同一个实例(你怎么回来)?除非您需要在应用程序启动之间保留数据,否则不应为此目的使用 NSUserDefaults。