【发布时间】:2014-05-06 22:20:03
【问题描述】:
我第二次尝试展示我的视图控制器时遇到了一个异常,我希望这个列表中的人们能够阐明我做错了什么......
我的故事板有一个加载 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 的第二个实例被加载并显示并且我单击一个单元格,performSegue 再次被调用,并且 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 的实例管理时,才能使用推送 segue。'
知道我可能做错了什么吗?
【问题讨论】:
-
我能在两者之间做出的唯一区别是,在一个循环中,您正在推动视图控制器,而在另一个循环中,您正在呈现它..所以尝试推动后半部分查看控制器,您会收到异常!
-
不抱歉 - 尝试过但遇到了同样的问题。不知何故,我第一次调用新视图控制器的调用必须弄乱层次结构 - 我试图添加一个新的 segue,在情节提要中加载一个新的控制器视图,但我遇到了同样的问题......
标签: ios7 uiviewcontroller uinavigationcontroller uistoryboard segue