在导航控制器中模态显示故事板

时间:2014-06-12 10:44:14

标签: ios uinavigationcontroller storyboard uistoryboard segue

我有UIStoryboard,其中包含4到5个ViewControllers。这些ViewControllers通过push segue相互连接。此故事板未嵌入NavigationController内。

现在我必须在我的应用程序中的两个不同场景中使用此UIStoryboard

  1. UIStoryboard被推入已在ViewController内的NavigationController内,所以我可以这样做。

    UIStoryboard * myStoryboard = [UIStoryboard storyboardWithName:@“myStoryboard”bundle:nil];     UIViewController * vc =(UIViewController *)[myStoryboard instantiateInitialViewController];     [self.navigationController pushViewController:vc animated:YES];

  2. 当我们在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:^ {

              }];
      

    它已成功显示,但现在当UIStoryboardNavigationController内没有任何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

1 个答案:

答案 0 :(得分:0)

它将无法工作,因为您正在从控制器触发根segue,该控制器是推模式且未包含在导航控制器中。

您可能希望交换层次结构,以便主视图位于导航控制器中,导航控制器是窗口根视图控制器,而另一个视图控制器是按模式推送。

您实际上必须将UIViewController设置为UINavigationController的根控制器(或者从视图控制器wia navcontroller推送)。要做到这一点

  1. 在视图控制器

  2. 之前将新导航控制器拖到故事板中
  3. 右键单击导航控制器,并将“Root View Controller”属性连接到现有的视图控制器。

  4. 将入口点箭头从视图控制器移动到根视图控制器

  5. 希望这会有所帮助。