我有一个带有两个UITextField的应用程序,用户输入一个整数,然后使用用户输入的值调用方法。但是当我完全关闭应用程序时,值将被删除。我想更改它以保存用户在关闭时输入的值,并在重新打开应用程序时加载它。我尝试使用NSUserDefault,它工作正常(使用保存和加载按钮),但我想让它自动进行,而不按任何按钮。我看到其他人用AppDelegate.m中的基本方法来做,但我对此一无所知,因此我根本不理解它。
我在网上看到了很多教程,但我不理解其中的任何一个,请帮助,并给出详细的答案,谢谢:)
答案 0 :(得分:1)
继续使用NSUserDefaults
,没有更好的方法来实现您的目标。
在您的情况下,只需在UITextField
上设置一个代理,每次更改值时,请将其保存在NSUserDefaults
中。这样,您就不会有任何按钮,NSUserDefaults
将始终包含最后一个值。
答案 1 :(得分:1)
你使用保存按钮吗?然后只需在UITextField的text changed事件中应用相同的代码,如下所示:
[textField addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged];
这意味着当文本在字段中更改时,'txtFieldDidChange'中的代码将运行。这是您写入NSUSerDefaults
的地方答案 2 :(得分: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
(当用户更改其中一个textFields时),并在创建textFields后立即调用loadTextFieldValues
。