alertView didDismissWithButtomIndex не вызывается после щелчка по кнопке alertView - PullRequest
0 голосов
/ 20 января 2011

Я недавно начал свои исследования по разработке для iOS, так что простите, если я спрашиваю что-то слишком очевидное.

Когда загружается представление моего приложения, оно проверяет конфигурации для некоторых ключей и, если для этих ключей нет значения,приложение должно отобразить предупреждение и выйти.

Прежде всего, я реализовал UIAlertViewDelegate:

@interface FirstViewController : UIViewController <UIAlertViewDelegate> {
...

А затем проверил настройки:

    - (void)viewDidLoad {
          NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

              NSString *url = [defaults stringForKey:@"url"];
          NSString *apiKey = [defaults stringForKey:@"api-key"];

          if([url length] < 1 || [apiKey length] < 1){
           UIAlertView *dialog = [[[UIAlertView alloc] 
                       initWithTitle:@"Not properly configured" 
                       message:@"This application was not properly configured. Please configure the application on your iPhone settings." 
               delegate:self 
               cancelButtonTitle:@"Close"
               otherButtonTitles:nil]
               autorelease];
        [dialog setTag:1];
        [dialog show];
    }

    [url release];
    [apiKey release];
    [super viewDidLoad];
}

IПонимаю, что метод alertView didDismissWithButtomIndex должен вызываться после отклонения alertView, но по какой-то причине этот метод никогда не вызывается в моем коде.

    - (void)alertView:(UIAlertView *)alertView                   didDismissWithButtomIndex:(NSInteger)buttomIndex {
               if([alertView tag] == 1){
                exit(0);
               }
}

Есть идеи о том, почему это происходит?

Ответы [ 2 ]

4 голосов
/ 20 января 2011

didDismissWithButtonIndex написан с ошибкой, вы вставили туда букву 'm' вместо 'n'.

1 голос
/ 20 января 2011

Вы слушаете неправильный метод, вы должны реализовать:

alertView:clickedButtonAtIndex:

В документе вы можете прочитать, что didDismissWithButtomIndex вызывается, когда dismissWithClickedButtonIndex: animated: вызывается в alertView.

alertView: didDismissWithButtonIndex: отправляется делегату после того, как представление предупреждений отклоняется с экрана.

Таким образом, чтобы ваш код работал, вы должны реализовать что-то вроде:

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
  if(buttonIndex == ...) {
    // do something
  }
}

PS: Вы не должны вызывать exit (0), это плохая практика для iOS, чтобы заставить приложение выйти.Пользователь должен выйти из приложения с помощью кнопки home.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...