我有一个带有导航控制器的故事板应用程序和两个视图控制器('A','B')。
在Storyboard文件中: Navigationcontroller是初始视图控制器。视图控制器'A'作为rootcontroller连接到Navigationcontroller。视图控制器'B'位于故事板中,但未连接到任何视图控制器。
当我以编程方式尝试将视图控制器'B'从内部视图控制器'A'推送到导航控制器时:
B *controllerB = [[B alloc] init];
[self.navigationController pushViewController:controllerB animated:YES];
我得到的只是转换到黑屏。
我在运行时检查了视图控制器A中的navigationController属性,它不是零。 我不自己实例化navigationController,我让故事板完成工作(可能就是问题)。但我认为应该可以“手动”将视图控制器推送到由故事板创建的导航控制器。
当我在故事板中将segue从按钮连接到'B'时,一切正常。 只是以编程方式它不起作用,只在导航控制器内显示黑屏。
也许有人可以帮我解决这个问题。
答案 0 :(得分:4)
我还没有使用过故事板,所以这个答案来自于文档。看起来您无法从故事板中分配/初始化视图控制器。您需要使用instantiateViewControllerWithIdentifier:
实例的UIStoryboard
方法,然后才能推送控制器。
答案 1 :(得分:2)
接受的答案对我不起作用。我已经使用instantiateViewControllerWithIdentifier
导航到不同故事板中的控制器。我正在使用xcode7.2和Swift。
我从storyboard1导航,一些视图控制器的按钮动作。 目的地是故事板2的初始导航控制器 我仍然得到黑屏。
问题是storyboard2链接到第一个视图控制器的导航控制器是通过show
链接的。
<强>解决方案:强>
删除导航控制器和第一个视图控制器之间的链接。现在使用root view controller
链接它。 (按住Ctrl键并单击导航控制器并将其拖动到视图控制器并选择“根视图控制器”选项)