0

我有一个带有两个 UITextField 的应用程序,用户在其中输入一个整数,然后使用用户输入的值调用一个方法。但是当我完全关闭应用程序时,这些值将被删除。我想更改它以保存用户在关闭时输入的值,并在重新打开应用程序时加载它。我用 NSUserDefault 试过了,效果很好(带有保存和加载按钮),但我希望它自动完成,无需按任何按钮。我看到其他人用 AppDelegate.m 中的基本方法来做,但我对此一无所知,因此我完全不明白。

网上看了很多教程,但没有看懂,请大家帮忙,给个详细的答案,谢谢:)

4

3 回答 3

1

继续使用NSUserDefaults,没有比你想做的更好的方法了。

在您的情况下,只需在 上设置一个委托UITextField,每次值更改时,将其保存在NSUserDefaults. 这样,您将没有任何按钮,并且您NSUserDefaults将始终包含最后一个值。

于 2013-10-25T15:43:17.763 回答
1

您可以使用“保存”按钮吗?然后只需在 UITextField 的文本更改事件中应用相同的代码,如下所示:

[textField addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged];

这意味着当字段中的文本更改时,“txtFieldDidChange”中的代码将运行。这是你写 NSUSerDefaults 的地方

于 2013-10-25T15:43:45.190 回答
0

你快到了。只需定义两个函数,一个用于保存两个字符串,另一个用于加载它们。

    -(void)saveTextFieldValues() {
        NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];

        // saving
        [prefs setObject:self.firstTextField.text forKey:@"FirstTextFieldKey"];
        [prefs setObject:self.secondTextField.text forKey:@"SecondTextFieldKey"];

        [prefs synchronize];
     }

-(void)loadTextFieldValues() {
    NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];

    //Load textField texts

    if ([prefs stringForKey:@"FirstTextFieldKey"]):
        self.firstTextField.text = [prefs stringForKey:@"FirstTextFieldKey"];

    if ([prefs stringForKey:@"SecondTextFieldKey"]):
        self.secondTextField.text = [prefs stringForKey:@"SecondTextFieldKey"];

}

然后saveTextFieldValues在您的回调中调用(当用户更改其中一个文本字段时)并loadTextFieldValues在您创建文本字段后立即调用。

于 2013-10-25T15:51:57.477 回答