2013-05-02 3 views
0

при попытке представить контроллер модального представления программно из моего UITabBarController. Я получаю следующую ошибку: «Предупреждение: попытайтесь представить xyzLoginViewController на xyzTabBarViewController, чей вид не находится в иерархии окон!»Ошибка при попытке представить контроллер Modal View

код выглядит следующим образом:

+ (void) openWithViewController:(UIViewController*) controller AndDelegate:(id) delegate 
{ 
    UIStoryboard *sb = [UIStoryboard storyboardWithName:@"LoginSignup" bundle:nil]; 
    xyzLoginViewController *vc = [sb instantiateViewControllerWithIdentifier:@"xyzLoginViewController"]; 
    vc.modalTransitionStyle = UIModalTransitionStyleCoverVertical; 
    vc.delegate = delegate; 
    [controller presentViewController:vc animated:YES completion:nil]; 
} 

Я попытался выполнения это от моего приложения делегата, а также в viewDidAppear: метод моего контроллера бар вкладки, однако это не помогло.

Я рассмотрел многие подобные вопросы и до сих пор не повезло.

+0

Вам нужно добавить один из видов tabBarController, а не сам tabBarController. –

+2

Ваш контроллер, который вы передаете, еще не был представлен. Вам нужно представить этот контроллер представления, а затем выполнить модальный. –

ответ

1
Attempt to present xyzLoginViewController on xyzTabBarViewController 
whose view is not in the window hierarchy 

Вы должны принять это предупреждение всерьез и буквально; это означает именно то, что он говорит. В то время, когда вы делаете этот вызов, представление xyzTabBarViewController не находится в окне вашего приложения нигде. Вы создали этот экземпляр, но его вид не находится в окне. Если там - - вид xyzTabBarViewController в окне, это должно быть другое изображение xyzTabBarViewController.

Это действительно все сводится к тому, что controller находится в коде, который вы показали. Но так как вы не показали, откуда приходит controller, или что еще вы сделали с ним, больше нечего сказать.

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