Ios7 presentViewController:&x27;找不到segue';的导航控制器如何处理来自同一ViewController的2个分段

Ios7 presentViewController:&x27;找不到segue';的导航控制器如何处理来自同一ViewController的2个分段,ios7,uiviewcontroller,uinavigationcontroller,uistoryboard,segue,Ios7,Uiviewcontroller,Uinavigationcontroller,Uistoryboard,Segue,当我第二次尝试展示我的视图控制器时,我遇到了一个例外,我希望列表中的人能对我做错了什么有所了解 我的故事板有一个加载CategoryViewController的navigationController。在CategoryViewController UI(UICollectionViewController)中,一个segue连接到单元以加载另一个视图控制器 当在单元格上单击时,将调用我的CategoryViewController中的performSegue(到目前为止还不错),然后我将重新

当我第二次尝试展示我的视图控制器时,我遇到了一个例外,我希望列表中的人能对我做错了什么有所了解

我的故事板有一个加载CategoryViewController的navigationController。在CategoryViewController UI(UICollectionViewController)中,一个segue连接到单元以加载另一个视图控制器

当在单元格上单击时,将调用我的CategoryViewController中的performSegue(到目前为止还不错),然后我将重新加载相同的视图控制器,如下所示:

//check if item has a second category or not
if (/*need to reload same controller with different data*/) {
        //Load list of items for that category
        //CategoryViewController *v= [segue destinationViewController];

        UIStoryboard *sb = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
        UINavigationController *vc = [sb instantiateViewControllerWithIdentifier:@"categoryViewID"];
        CategoryViewController *cvc = (CategoryViewController*)vc;
        // do some into on cvc here

        vc.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
        [self.navigationController pushViewController:vc animated:YES];

    } 
这个很好用。现在,加载并显示CategoryViewController的第二个实例后,我单击一个单元格,将再次调用PerformScheue,并执行if语句的第二部分,其中我尝试加载另一个viewController,并执行以下几行:

 UIStoryboard *sb = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
 UINavigationController *vc = [sb instantiateViewControllerWithIdentifier:@"categoryViewerID"];
 CategoryViewerController *cvc = (CategoryViewerController*)vc;
 vc.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
 [self.navigationController presentViewController:vc animated:YES completion:NULL];
我的新viewController被实例化,但在实例化之后,我出现以下运行时错误: 原因:“找不到segue“showCategoryList”的导航控制器。”。仅当源控制器由UINavigationController实例管理时,才能使用推送序列。'


知道我做错了什么吗

我终于想出了一个办法让这一切顺利进行

DTS中有一个很好的示例代码,演示了如何使用segue,以及如何从1视图控制器设置多个segue:

第一个segue从cellID连接到自身(ctrl单击从cellID拖动到场景底部的控制器)-第二个segue从控制器连接到我的故事板中的第二个场景

在我实现的代码中,当我不希望创建新的“同一控制器”时,shouldPerformSegueWithIdentifier并返回false

如示例代码didSelectItemAtIndexPath所示,当控制器中满足正确的条件时,我通过调用PerformsgueWithIdentifier来触发第二个序列


还有一个谜团:导航控制器现在位于我的rootViewController和我的第二个viewController之间。我必须尝试将其移回原来的位置,以查看这是否会改变应用程序的行为并再次生成运行时错误…

我能分辨出两者之间的唯一区别是,在一个循环中,您推送视图控制器,在另一个循环中,您展示它。。因此,尝试将视图控制器的后半部分推到出现异常的位置!没有,抱歉-尝试过,但遇到了相同的问题。不知怎的,我第一次调用推送新的视图控制器一定会弄乱层次结构-我试图添加一个新的序列,在故事板中加载一个新的控制器视图,但我得到了同样的问题。。。