以编程方式呈现不同的故事板时出错

时间:2015-10-10 02:53:24

标签: ios objective-c storyboard viewcontroller

我有一个带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中这样做吗?

1 个答案:

答案 0 :(得分:1)

只需将代码移至viewDidAppear:即可。在viewWillAppear:中,您的视图尚未出现在界面中(即&#34;将&#34;表示),因此无法呈现。