我的应用包含以下内容:
在(2).m中按下键时,使用以下代码:
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
if(textField==_serverAddress){
NSLog(@"new server adress %@", textField.text);
[[NSUserDefaults standardUserDefaults] setObject:textField.text forKey:@"serverAddress"];
[[NSUserDefaults standardUserDefaults] synchronize];
}
if(textField==_login){
NSLog(@"new login %@", textField.text );
[[NSUserDefaults standardUserDefaults] setObject:textField.text forKey:@"login"];
[[NSUserDefaults standardUserDefaults] synchronize];
}
if(textField==_password)
{
NSLog(@"new password %@", textField.text);
[[NSUserDefaults standardUserDefaults] setObject:textField.text forKey:@"password"];
[[NSUserDefaults standardUserDefaults] synchronize];
}
[textField resignFirstResponder];
return YES;
}
在viewDidLoad中,使用以下代码:
- (void)viewDidLoad
{
// Get the stored data before the view loads
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *savedServerAddress = [defaults objectForKey:@"savedServerAddress"];
NSString *savedLogin = [defaults objectForKey:@"savedLogin"];
NSString *savedPassword = [defaults objectForKey:@"savedPassword"];
// Update the UI elements with the saved data
self.serverAddress.text = savedServerAddress;
self.login.text = savedLogin;
self.password.text = savedPassword;
[super viewDidLoad];
_serverAddress.delegate = self;
_login.delegate = self;
_password.delegate = self;
}
当我在(2)中将设置更改为新设置然后返回(1)然后返回(2)我看到纯文本字段,我做错了什么?
答案 0 :(得分:2)
您有不同的密钥,用于存储和读取用户默认值。例如,服务器地址与密钥@"serverAddress"
一起存储,但使用密钥@"savedServerAddress"
读取。
您必须使用相同的密钥,否则读取用户默认值将始终返回nil
。
答案 1 :(得分:0)
对[super viewDidLoad];
的调用应该是viewDidLoad
方法中的第一个语句。