从应用程序委托中的Storyboard获取初始视图控制器

我试图访问我的故事板的初始viewcontroller。 它是一个导航控制器,通过一个seque连接到第二个视图控制器。 所以应用程序完成启动后,我想直接显示通过segue连接的viewController。 我试过这样的代码,但它不工作…

UINavigationController *navController = (UINavigationController*)self.window.rootViewController; [navController.topViewController performSegueWithIdentifier:@"showLoginScreen" sender:self]; 

我究竟做错了什么?

4年后

如果再过四年看我的问题,我不知道究竟是什么问题。

确保你有勾号标记

是初始的ViewController

用于storyBoard中的UINavigationController选项

 UIStoryboard* storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil]; UINavigationController * myStoryBoardInitialViewController = [storyboard instantiateInitialViewController]; 

塞巴斯蒂安,我不知道为什么你想要手动启动初始视图控制器 – 如果你在“新build项目”向导的第二个屏幕上打勾“使用故事板”,所有我的项目(都使用故事板)自动执行此操作。

也许你需要将故事板场景标记为inital? 这可以在场景的属性检查器中通过勾选“是初始视图控制器”来完成,而不是显式命名。

然后 – 如果您真的有一个不寻常的设置,需要您手动访问的场景,您可以使用以下:

 UIStoryboard *sb = [UIStoryboard storyboardWithName: "StoryboardName" bundle: [NSBundle mainBundle]]; UIViewController *vc = [sb instantiateInitialViewController]; 

(当心 – 这里没有代码完成,所以再次检查拼写。)

或者,也许我得到你的问题完全错误..? 快乐的黑客!

在我的应用程序中,我有tabBar

 UIStoryboard *storyBoard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil]; TabBarController *tabBar = [storyBoard instantiateViewControllerWithIdentifier:@"TabBarController"]; _window.rootViewController = tabBar;