首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >手动启动Viewcontroller后无法找到导航控制器

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

Stack Overflow用户
提问于 2014-05-27 14:03:35
回答 1查看 1.7K关注 0票数 0

我有一个具有表单功能的视图控制器,一旦提交了这个表单,我就需要该应用程序移回“主页”页面,这是用它完成的:

代码语言:javascript
运行
复制
ITViewController *svc =[self.storyboard instantiateViewControllerWithIdentifier:@"home"];
[svc setModalTransitionStyle:UIModalTransitionStyleCoverVertical];
[self presentViewController:svc animated:YES completion:nil];

但是,一旦我这样做并尝试单击“主页”页面上的任何按钮,我就会出现以下错误:

由于异常“NSGenericException”终止应用程序,原因是:“无法找到segue的导航控制器。只有当源控制器由UINavigationController实例管理时,才能使用Push segue。”

我的故事板看起来像:

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-27 14:20:44

将代码替换为:

代码语言:javascript
运行
复制
ITViewController *svc =[self.storyboard instantiateViewControllerWithIdentifier:@"home"];
UINavigationController *navcon = [[UINavigationController alloc] initWithRootViewController:svc];
[navcon setModalTransitionStyle:UIModalTransitionStyleCoverVertical];
[self presentViewController:navcon animated:YES completion:nil];

您的问题是,您从导航控制器中呈现一个ITViewController。然后你试着表演一段独奏曲。由于没有导航控制器,您的应用程序会崩溃。将您的ITViewController嵌入到UINavigationController中,它将工作。

编辑:

顺便说一句,如果你只想回到主视图控制器,我建议不要分配一个新的视图控制器,而是让导航控制器弹出到它的根视图控制器。而不是:

代码语言:javascript
运行
复制
ITViewController *svc =[self.storyboard instantiateViewControllerWithIdentifier:@"home"];
[svc setModalTransitionStyle:UIModalTransitionStyleCoverVertical];
[self presentViewController:svc animated:YES completion:nil];

做:

代码语言:javascript
运行
复制
[self.navigationController popToRootViewControllerAnimated:YES];
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23891628

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档