2015-10-10 1 views
0

У меня есть приложение с 2 раскадровки. Один из них - основное приложение для приложения, а другое - установочная раскадровка для настройки профиля пользователя. Прямо сейчас, у меня он настроен так, что основным интерфейсом является Setup.storyboard. В первом представлении контроллера в этой раскадровке, в методе -viewWillAppear:animated, он проверяет NSUserDefault, чтобы узнать, завершена ли настройка. Если это так, я выполняю этот код.Ошибка при представлении различного раскадровки программно

- (void)viewWillAppear:(BOOL)animated 
{ 
    [super viewWillAppear:animated]; 

    if ([[NSUserDefaults standardUserDefaults] boolForKey:@"userHasCompletedSetup"]) { 

     UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; 
     SWRevealViewController *vc = [sb instantiateViewControllerWithIdentifier:@"initialVC"]; 
     [self presentViewController:vc animated:YES completion:NULL]; 
    } 
} 

Я получаю ошибку Warning: Attempt to present <SWRevealViewController: 0x7ff20a595220> on <MPOSetupOneViewController: 0x7ff20a720b80> whose view is not in the window hierarchy!

(я использую SWRevealViewController в моем приложении для меню.)

Я получаю эту ошибку, и контроллер представления не включается. Есть ли способ переключить раскадровки на основе NSUserDefault? Могу ли я сделать это в AppDelegate?

+0

@matt Как это работает? Will -> Только что сделал ключевую часть моего приложения правильно. Если вы можете добавить это в ответ, плохо согласитесь. – Minebomber

ответ

1

Просто переместите код на viewDidAppear:. В viewWillAppear: ваше представление еще не находится в интерфейсе (это то, что означает «будет»), поэтому от него нечего представить.