0

我的应用程序包含以下内容:

  1. 主要数据视图控件
  2. 设置视图控制器(有 3 个设置文本字段)

在 (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) 我看到纯文本字段时,我做错了什么?

4

2 回答 2

2

您有不同的键来存储和读取用户默认值。例如,服务器地址与 key 一起存储@"serverAddress",但使用 key 读取@"savedServerAddress"

您必须使用相同的键,否则读取用户默认值将始终返回nil

于 2013-01-29T15:01:29.330 回答
0

调用[super viewDidLoad];应该是viewDidLoad方法中的第一条语句。

于 2013-01-29T14:55:24.980 回答