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?

UINavigationController 错误

从 UIViewController 调用自定义 UINavigationController 中的方法时目标错误

使用 UINavigationController 和 UINavigationBar 时图层 y 位置的动画错误

防止 uinavigationcontroller 设置中 popViewControllerAnimated 的错误访问崩溃