我有UIStoryboard
,其中包含4到5个ViewControllers
。这些ViewControllers
通过push segue相互连接。此故事板未嵌入NavigationController
内。
现在我必须在我的应用程序中的两个不同场景中使用此UIStoryboard
。
此UIStoryboard
被推入已在ViewController
内的NavigationController
内,所以我可以这样做。
UIStoryboard * myStoryboard = [UIStoryboard storyboardWithName:@“myStoryboard”bundle:nil]; UIViewController * vc =(UIViewController *)[myStoryboard instantiateInitialViewController]; [self.navigationController pushViewController:vc animated:YES];
当我们在UIStoryboard
内推动NavigationController
以便进一步导航UIStoryboard's
ViewControllers
可以使用故事中的NavigationController
时,此功能完全正常董事会被推了。
第二个场景是必须从viewController模态呈现这个UIStoryBoard
,我可以这样做。
UIStoryboard * myStoryBoard = [UIStoryboard storyboardWithName:@“myStoryBoard”bundle:nil]; UIViewController * vc = [myStoryBoard instantiateInitialViewController];
[self presentViewController:vc animated:YES completion:^ {
}];
它已成功显示,但现在当UIStoryboard
在NavigationController
内没有任何ViewController
时,我在{{1}内从第一个ViewController
推送到第二个UIStoryboard
它崩溃(它应该)说
Could not find a navigation controller for segue. Push segues can only be used when the source controller is managed by an instance of UINavigationController.'
有些机构可以告诉我如何解决这个问题,或者我如何以编程方式嵌入或删除UIStoryboard
NavigationController
答案 0 :(得分:0)
它将无法工作,因为您正在从控制器触发根segue,该控制器是推模式且未包含在导航控制器中。
您可能希望交换层次结构,以便主视图位于导航控制器中,导航控制器是窗口根视图控制器,而另一个视图控制器是按模式推送。
您实际上必须将UIViewController设置为UINavigationController的根控制器(或者从视图控制器wia navcontroller推送)。要做到这一点
在视图控制器
右键单击导航控制器,并将“Root View Controller”属性连接到现有的视图控制器。
将入口点箭头从视图控制器移动到根视图控制器
希望这会有所帮助。