手动启动Viewcontroller后无法找到导航控制器

时间:2014-05-27 14:03:35

标签: ios objective-c

我有一个带有表单的viewcontroller,一旦提交,我需要将应用程序移回“家”。页面完成:

ITViewController *svc =[self.storyboard instantiateViewControllerWithIdentifier:@"home"];
[svc setModalTransitionStyle:UIModalTransitionStyleCoverVertical];
[self presentViewController:svc animated:YES completion:nil];

然而,一旦我这样做并尝试点击“家”上的任何按钮。页面我最终得到错误:

  

由于未捕获的异常终止应用程序' NSGenericException',   原因:'找不到segue的导航控制器。 Push segues只能在源时使用   controller由UINavigationController实例管理。'

我的故事板看起来像:

enter image description here

电子邮件视图控制器是我们从

返回的地方

1 个答案:

答案 0 :(得分:2)

用以下代码替换您的代码:

ITViewController *svc =[self.storyboard instantiateViewControllerWithIdentifier:@"home"];
UINavigationController *navcon = [[UINavigationController alloc] initWithRootViewController:svc];
[navcon setModalTransitionStyle:UIModalTransitionStyleCoverVertical];
[self presentViewController:navcon animated:YES completion:nil];

您的问题是您正在使用导航控制器演示ITViewController。然后你尝试执行一个segue。由于没有导航控制器,您的应用程序崩溃了。将您的ITViewController嵌入UINavigationController,它将起作用。

修改

顺便说一句,如果你只想回到主视图控制器,我建议不要分配新的视图控制器并以模态方式呈现它,只需让你的导航控制器弹出到它的根视图控制器。而不是:

ITViewController *svc =[self.storyboard instantiateViewControllerWithIdentifier:@"home"];
[svc setModalTransitionStyle:UIModalTransitionStyleCoverVertical];
[self presentViewController:svc animated:YES completion:nil];

执行:

[self.navigationController popToRootViewControllerAnimated:YES];