我有一个带有表单的viewcontroller,一旦提交,我需要将应用程序移回“家”。页面完成:
ITViewController *svc =[self.storyboard instantiateViewControllerWithIdentifier:@"home"];
[svc setModalTransitionStyle:UIModalTransitionStyleCoverVertical];
[self presentViewController:svc animated:YES completion:nil];
然而,一旦我这样做并尝试点击“家”上的任何按钮。页面我最终得到错误:
由于未捕获的异常终止应用程序' NSGenericException', 原因:'找不到segue的导航控制器。 Push segues只能在源时使用 controller由UINavigationController实例管理。'
我的故事板看起来像:
电子邮件视图控制器是我们从
返回的地方答案 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];