2014-10-03 5 views
0

В моей раскадровке у меня есть два UIViewControllers. Контроллер начального представления - это экран загрузки/заставки, который показывает простое изображение. Второй контроллер просмотра - UIWebView.Ошибка текущего контроля ViewController

Я пытаюсь заменить контроллер вида просмотра контроллером представления UIWebView после того, как приложение полностью загрузится.

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

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; 
UIViewController *viewController = [storyboard instantiateViewControllerWithIdentifier:@"WebView"]; 

[self presentViewController:viewController animated:NO completion:^(void){}]; 

Однако этот код выдает следующее сообщение об ошибке:

Warning: Attempt to present <WebController: 0x145617960> on <LoadingController: 0x145610c40> whose view is not in the window hierarchy! 

я делаю что-то не так?

Спасибо за любую помощь/предложения.

+0

Может быть, это решение http://stackoverflow.com/ вопросы/11862883/чей-вид-это-не-в-оконной иерархия –

ответ

0

Если ваш блок кода:

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; 
UIViewController *viewController = [storyboard instantiateViewControllerWithIdentifier:@"WebView"]; 

[self presentViewController:viewController animated:NO completion:^(void){}]; 

в методе вас загрузки контроллер представления, которое вызывается, когда когда-контроллер загружается, такие как viewDidLoad, viewDidAppear: или любые аналогичные методы, проблема потому что ваш контроллер веб-представления не имеет ничего общего, поскольку self в presentViewController относится к контроллеру режима загрузки. Мое предложение было бы поставить его в viewDidAppear: вашего контроллера вида загрузки и отправки через секунду, чтобы обеспечить ваш контроллер представления нагрузки на самом деле способна представить его

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1f * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ 
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; 
    UIViewController *viewController = [storyboard instantiateViewControllerWithIdentifier:@"WebView"]; 

    [self presentViewController:viewController animated:NO completion:^(void){}]; 
}); 
Смежные вопросы