启动推送segue导致“不支持推送导航控制器”

时间:2016-01-20 03:44:40

标签: ios objective-c uitableview

在我的UITableView中,当用户点击一个单元格时,我会发起一个像这样的segue:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{   
    [self performSegueWithIdentifier:@"MCExpandedSegue" sender:self];   
}

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([segue.identifier isEqualToString:@"MCExpandedSegue"]){
        // Opens item in browser
        MCExpandedViewController *controller = (MCExpandedViewController *) segue.destinationViewController;
    }
}

为了让目标视图控制器(MCExpandedViewController)具有导航栏和后退按钮,我将其嵌入导航控制器中,如下所示:

enter image description here

但是,在点击表格中的单元格以进行此segue时,我收到以下错误:*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Pushing a navigation controller is not supported'。这是因为它试图转向MCExpandedViewController但被绊倒,因为它包含在导航控制器中?我怎样才能正确地做到这一点?

2 个答案:

答案 0 :(得分:2)

首先确保您的第一个视图控制器嵌入导航控制器中。 MatchCenterViewController位于导航控制器中。 在不同的场景中不需要另一个导航控制器。

答案 1 :(得分:2)

  1. 删除the navigation controller并删除 直接MCExpandedViewController
  2. 将此添加到viewWillAppear:MCExpandedViewController.m

    [self.navigationController setNavigationBarHidden:NO animated:YES];