6

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

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

我究竟做错了什么?

4年后

如果我 4 年后再次查看我的问题,老实说,我不知道我真正的问题是什么。

4

3 回答 3

27

确保您已勾选标记

是初始的 ViewController

UINavigationController故事板中的选项

UIStoryboard* storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
UINavigationController * myStoryBoardInitialViewController = [storyboard instantiateInitialViewController];
于 2012-11-08T12:49:23.213 回答
4

Sebastian,我不确定你为什么要手动启动初始视图控制器——如果你在“新建项目”向导的第二个屏幕上勾选“使用故事板”,我所有的项目(都使用故事板)会自动执行此操作。

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

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

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

(注意 - 这里没有代码完成,所以再次检查拼写。)

或者,也许我把你的问题完全弄错了..?快乐黑客!

于 2012-11-08T12:43:55.887 回答
0

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

UIStoryboard *storyBoard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];

TabBarController *tabBar = [storyBoard instantiateViewControllerWithIdentifier:@"TabBarController"];

_window.rootViewController = tabBar;
于 2012-11-08T12:51:39.070 回答