【问题标题】:Could not find a navigation controller after manually launching Viewcontroller手动启动 Viewcontroller 后找不到导航控制器
【发布时间】:2014-07-16 11:55:11
【问题描述】:

我有一个具有表单的视图控制器,一旦提交,我需要应用程序返回到“主页”页面:

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

但是,一旦我完成此操作并尝试单击“主页”页面上的任何按钮,我最终会遇到错误:

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

我的故事板看起来像:

电子邮件视图控制器是我们返回的地方

【问题讨论】:

标签: ios objective-c


【解决方案1】:

用这个替换你的代码:

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];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多