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

Error when presenting different storyboard programmatically

我有一个包含 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 中执行此操作吗?

只需将代码移至viewDidAppear:。在 viewWillAppear: 中,您的视图还不在界面中(这就是 "will" 的意思),因此没有任何内容可以呈现。