UINavigationController 错误
Posted
技术标签:
【中文标题】UINavigationController 错误【英文标题】:UINavigationController error 【发布时间】:2013-12-01 18:45:28 【问题描述】:我有一个应用程序,其结构如下。
-
首先,用户使用其凭据登录。
然后选择几个选择标准(例如:机票详情)
将出现一个表格视图并显示工单的简要详细信息。
基于选择的表格视图中的推送转场将显示详细视图。
在这里,我为表格视图添加了一个导航控制器,并尝试将其保留为根视图控制器。另外,我尝试将我的第一个视图控制器作为根视图文件夹。
错误信息是:
* 由于未捕获的异常“NSGenericException”而终止应用程序,原因:“找不到用于 segue 'TicketDetailSegue' 的导航控制器。只有当源控制器由 UINavigationController 的实例管理时,才能使用推送 segue。 * 首先抛出调用栈:
以下是我在 Segue 上的代码:
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
if ([segue.identifier isEqualToString:@"TicketDetailSegue"])
UITableViewCell *cell=(UITableViewCell *)sender;
NSIndexPath *ip= [self.tableView indexPathForCell:cell];
Ticket *T=[self.TicketsFinal objectAtIndex:ip.row];
ViewFour *pdvc=(ViewFour *)segue.destinationViewController;
pdvc.ticket=T;
注意:我的 NavigationController 不能是初始控制器。有人可以提出解决方案吗?非常感谢任何帮助。
【问题讨论】:
“出现了一个表格视图”——你是如何让它出现的?您如何以及在何处添加导航控制器?为什么导航控制器不能成为初始控制器? 您好,感谢您的回复。网站不允许我输入图片(因为我没有最低声誉)。请您将初始邮件发送至 dinesh.srd@gmail.com,我会在回复中向您解释我的问题。期待你的邮件。谢谢 【参考方案1】:问题在于您展示了作为导航控制器的根视图控制器的控制器(使用您发布的 prepareForSegue 方法的控制器),而不是展示了导航控制器本身,因此导航控制器不会使其进入您的控制器层次结构。您在 ViewTwo 中的提交方法应如下所示:
-(IBAction)Submit
UINavigationController *nav =[self.storyboard instantiateViewControllerWithIdentifier:@"TicketsListNav"];
TicketListViewController *third = (TicketListViewController *)nav.topViewController;
// other stuff here
[self presentViewController:nav animated:YES completion:nil];
【讨论】:
非常感谢埃里克。它工作得很好。我想投票,但该网站限制至少 15 名声望才能投票。对于那个很抱歉。非常感谢您的及时帮助。非常感谢。以上是关于UINavigationController 错误的主要内容,如果未能解决你的问题,请参考以下文章
UINavigationController:使用 SWRevealViewController 错误:不平衡调用开始/结束外观转换
我是不是以错误的方式使用 UINavigationController?
从 UIViewController 调用自定义 UINavigationController 中的方法时目标错误
使用 UINavigationController 和 UINavigationBar 时图层 y 位置的动画错误
防止 uinavigationcontroller 设置中 popViewControllerAnimated 的错误访问崩溃