2015-10-08 2 views
4

Я пытаюсь проверить UIAlertController в iOS 9 для моего образца приложения и во время его запуска, тогда я нашел предупреждение в консоли. Я использую Xcode 7 и Objective C.Попытка представить UIAlertController на UIViewController, чей вид не находится в иерархии окон

В приведенном ниже предупреждающем сообщении.

Warning: Attempt to present < UIAlertController: 0x7fb1bb5be040 > on < ViewController: 0x7fb1bb5aef30 > whose view is not in the window hierarchy!

Для получения более подробной информации, пожалуйста, найдите приведенный ниже код.

UIAlertController* alert = [UIAlertController alertControllerWithTitle:@"My Alert" 
                   message:@"This is an alert." 
                 preferredStyle:UIAlertControllerStyleAlert]; 

UIAlertAction* defaultAction = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault 
                 handler:^(UIAlertAction * action) {}]; 

[alert addAction:defaultAction]; 
[self presentViewController:alert animated:YES completion:nil]; 
+0

где вы звоните в этот код? –

+0

Вы вызываете это на viewDidload? –

+0

@ Mr.T: Да, я звоню в viewDidLoad. –

ответ

13

Я думаю, вы пытаетесь представить предупреждение на виду, загрузили. Вы получите сообщение об ошибке:

Warning: Attempt to present < UIAlertController: 0x7fb1bb5be040 > on < ViewController: 0x7fb1bb5aef30 > whose view is not in the window hierarchy!

потому что, в поле зрения загрузите представления, которые еще не доступны для отображения пользователю. Следовательно, вы не можете представить предупреждение. Переместите код в viewDidAppear

+3

Это должно получить больше бонусов. Общепринятое решение использования 'dispatch_async (dispatch_get_main_queue(),^{...});' является взломом. –

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