UIAlertView с UITextField - сохранение с помощью NSUserDefaults - PullRequest
0 голосов
/ 06 января 2012

В файле .m моего ViewDidLoad у меня есть следующий код:

 if (![@"1" isEqualToString:[[NSUserDefaults standardUserDefaults] objectForKey:@"Name"]]) {
    [[NSUserDefaults standardUserDefaults] setValue:@"1" forKey:@"Name"];
    [[NSUserDefaults standardUserDefaults] synchronize];


UIAlertView *alertview = [[UIAlertView alloc] initWithTitle:@"What is your name?" message:@"\n\n\n" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Send", nil];

UITextField *utextfield = [[UITextField alloc] initWithFrame:CGRectMake (9.0, 60.0, 260.0, 25.0)]; utextfield.placeholder =@"Username";
[utextfield setBackgroundColor:[UIColor whiteColor]];
[alertview addSubview:utextfield];

[alertview show];

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{

}

Как видите, пользователь может сохранить свое имя здесь, чтобы ему не приходилось вводить его снова и снова. Кроме того, его больше не спросят, если он вошел. НО вместо того, чтобы отображать имя при загрузке, приложение отображает номер 1. Я думаю, я упускаю очевидное здесь.

Ответы [ 2 ]

1 голос
/ 06 января 2012

Вы никогда не устанавливаете значение имени, это должно быть сделано в alertView:clickedButtonAtIndex:

Я бы также предложил покончить с @ "1" и либо проверять на ноль (как предлагает @Roman), либосохраняя BOOL в другом ключе по умолчанию.

...
utextfield.tag = 9876; // some value likely not in use by the internals



- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
  if (buttonIndex == alertView.cancelButtonIndex) {
    [[NSUserDefaults standardUserDefaults] removeObjectForKey:@"Name"];
  } else if (buttonIndex == alertView.firstOtherButtonIndex) {
    UITextField *utextfield = (UITextField *)[alertView viewWithTag:9876];
    [[NSUserDefaults standardUserDefaults] setValue:utextfield.text forKey:@"Name"];
  }
  [[NSUserDefaults standardUserDefaults] synchronize];
}

вы можете настроить его так, как вам удобно

1 голос
/ 06 января 2012

Проверьте, если прогноз. Вы проверяете, не существует ли «1», а затем устанавливаете его на «1». может быть, вам стоит проверить, есть ли nil, например по умолчанию имя пользователя отсутствует.

...