2014-11-17 3 views
0

В этом коде предупреждение действие проявляется каждый раз, когда приложение станет активным:presentViewController не работает в viewDidLoad

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    [[NSNotificationCenter defaultCenter] addObserver:self 
             selector:@selector(applicationDidBecomeActive:) 
              name:UIApplicationDidBecomeActiveNotification 
              object:nil]; 


} 


- (void)applicationDidBecomeActive:(NSNotification *)notification 
{ 
    UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"Please make your choice" 
                     message:@"Would you like a cup of coffee?" 
                    preferredStyle:UIAlertControllerStyleActionSheet]; 

    UIAlertAction *yesAction = [UIAlertAction actionWithTitle:@"YES" 
                style:UIAlertActionStyleDefault 
                handler:^(UIAlertAction *action) { 
                 NSLog(@"You tapped YES"); 
                }]; 

    UIAlertAction *maybeAction = [UIAlertAction actionWithTitle:@"MAYBE" 
                 style:UIAlertActionStyleDefault 
                handler:^(UIAlertAction *action) { 
                 NSLog(@"You tapped MAYBE"); 
                }]; 

    UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"Cancel" 
                 style:UIAlertActionStyleCancel 
                handler:nil]; 

    [alertController addAction:yesAction]; 
    [alertController addAction:maybeAction]; 
    [alertController addAction:cancelAction]; 

    [self presentViewController:alertController animated:YES completion:nil]; 
} 

Кроме того, все работает, как ожидается, если перенести блок кода в UIAlertController в viewDidAppear метод ,

Но если я двигаю UIAlertController в viewDidLoad:

- (void)viewDidLoad { 
    UIAlertController *alertController [...] 
    [...] 
    [self presentViewController:alertController animated:YES completion:nil]; 
} 

это не делает работы. Предупреждение не отображается.

+0

У вас есть вопросы? Пока вы только что сделали некоторые заявления. – rmaddy

+0

Вопрос: почему предупреждение не отображается при вызове в viewDidLoad? – RikiRiocma

+0

Вы видите какое-либо сообщение в консоли при попытке отобразить предупреждение из 'viewDidLoad'? – rmaddy

ответ

2

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

+0

fyi, у вас есть опечатка в вашем ответе ... это viewDIDAppear, а не viewWillAppear. – LevinsonTechnologies

+0

Это не работает для меня, я должен показать два предупреждения 1 на 1, но он отображает только первое предупреждение .... Я использовал alertviewController –

 Смежные вопросы

  • Нет связанных вопросов^_^