在App Delegate中执行初始视图控制器的Seque

时间:2012-11-10 15:53:26

标签: objective-c ios cocoa uistoryboard

我有一个带有简单视图的导航控制器作为其根视图。它有一个通过seque连接到第二个视图控制器的按钮。 seque导致第二个视图控制器显示模态。如果条件不正确,我直接想要在应用程序启动后显示第二个视图控制器。 我尝试了很多代码,但它不会工作。以下是我的场景的屏幕截图:My Scene

任何想法如何做到这一点?


我尝试了以下内容:

UIStoryboard *storybord = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil]; 
UINavigationController *vc = [storybord instantiateInitialViewController]; 
[[vc.viewControllers objectAtIndex:0] performSegueWithIdentifier:@"simple" sender:self];

但是我收到以下错误消息:

  

尝试在视图不在窗口层次结构中的<UINavigationController: 0x71b2ab0>上显示<UINavigationController: 0x71b12c0>

1 个答案:

答案 0 :(得分:1)

我假设您正在尝试来自app delegate的示例代码?您需要确保在加载第一个视图之前不要尝试执行segue。巧合的是,如果你等到那时,它就像你需要做的performSegueWithIdentifier一样容易。因此,在第一个视图控制器的viewDidLoad中,例如:

if (bShouldAutomaticallyPerformSegueToSecondVC)
    [self performSegueWithIdentifier:@"simple" sender:self];

显然,用适当的逻辑替换bShouldAutomaticallyPerformSegueToSecondVC以确定何时自动转到第二个视图控制器。