当用户使用主页按钮关闭应用程序时,我想自动保存一堆NSUserDefaults
,而不是在按下保存按钮时(这是我迄今为止找到的所有内容)。最好的方法是什么?
例如,我有一个文本视图和两个可以增加和减少字体大小的按钮。每次用户更改文本大小时,不是保存文本大小的NSUSerDefaults
,而是可以在应用关闭时保存一次,而不使用保存按钮?
我发现this会讨论applicationWillTerminate:
和applicationWillResignActive:
等方法,但我不太清楚如何实现这些方法。
我默认将pointSize
设置为18,但是当我增加它时:
@IBAction func largerTextButton(sender: AnyObject) {
mainTextView.font = UIFont(name: mainTextView.font.fontName, size: mainTextView.font.pointSize+1)
println(mainTextView.font.pointSize)
}
并保存以下内容:
func applicationWillResignActive(application: UIApplication) {
userDefaults.setObject(mainTextView.font.pointSize, forKey: "textSize")
userDefaults.synchronize()
}
func applicationWillTerminate(application: UIApplication) {
userDefaults.setObject(mainTextView.font.pointSize, forKey: "textSize")
userDefaults.synchronize()
}
我将此代码添加到按钮时保存得很好,但不会保存在applicationWillResignActive
和applicationWillTerminate
下,因此保存本身不是问题。而是我遇到问题的applicationWillResignActive
和applicationWillTerminate
方法。
下次我运行应用程序时,我仍然得到18,使用它来检查:
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
println(toString(userDefaults.objectForKey("textSize")))
...
答案 0 :(得分:1)
您可以使用这两种方法,甚至是didEnterBackground
,这些方法可以在app委托中找到,只需要调用即可。
[NSUserDefaults standardUserDefaults].synchronize