当应用退出

时间:2015-07-30 00:08:13

标签: ios swift cocoa-touch nsuserdefaults uiapplicationdelegate

当用户使用主页按钮关闭应用程序时,我想自动保存一堆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()
}

我将此代码添加到按钮时保存得很好,但不会保存在applicationWillResignActiveapplicationWillTerminate下,因此保存本身不是问题。而是我遇到问题的applicationWillResignActiveapplicationWillTerminate方法。

下次我运行应用程序时,我仍然得到18,使用它来检查:

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view.
    println(toString(userDefaults.objectForKey("textSize")))
    ...

1 个答案:

答案 0 :(得分:1)

您可以使用这两种方法,甚至是didEnterBackground,这些方法可以在app委托中找到,只需要调用即可。

[NSUserDefaults standardUserDefaults].synchronize