【问题标题】:ios7 - Warning: Attempt to present UINavigationController on UINavigationController while a presentation is in progressios7 - 警告:在演示过程中尝试在 UINavigationController 上呈现 UINavigationController
【发布时间】:2014-01-27 16:48:41
【问题描述】:

在 didSelectRowAtIndexPath 中选择 segue 时,我收到了上述警告。这发生在 iPad 上。 iPhone 给出了不同的警告,我会看看对此的修复是否也可以修复另一个。

我在方法中有两个 segues。第一个作品没有事故。第二个拿起警告。我环顾了网络,并查看了其他人的解决方案。 nada,所以我在这里发帖..

这是代码:(我愿意接受更好的方法来编写它!)

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    //NSLog(@"%s", __FUNCTION__);

    if ((indexPath.section == 0) || (indexPath.section == 1) || (indexPath.section == 2)) return;
    if (indexPath.section > 4) return;

    //Images THIS WORKS OK
    if (indexPath.section == 3 && indexPath.row == 0) { 
        viewController1 = [[ViewController1 alloc] init];
        [self performSegueWithIdentifier:@"detailToV1" sender:self];
        [self.tableView reloadData];
    }

    if (indexPath.section == 3 && indexPath.row == 1) { // THIS REDULTS IN A WARNING
        viewController2 = [[ViewController2 alloc] init];
        [self performSegueWithIdentifier:@"detailToV2" sender:nil];
    }

//Notes THIS WORKS OK BUT I HAD TO USE A NIB TO AVOID THE WARNING
    if (indexPath.section == 4 && indexPath.row == 0) { 

        viewController3 = [[ViewController3 alloc] init];
        [[self navigationController] pushViewController:viewController3 animated:YES];
        [self.tableView reloadData];

    }
}

【问题讨论】:

    标签: ios ios7 segue


    【解决方案1】:

    ViewController3 的父类是什么?听起来它是一个导航控制器,据我了解,您不能从另一个导航控制器中推送导航控制器。如果你想做类似的事情,你需要从第一个导航控制器中展示新的导航控制器。

    编辑:

    基本上,如果您使用导航视图控制器推送另一个视图控制器,那么新的视图控制器将保留在导航视图控制器的“内部”。 (导航 VC 具有一次管理多个 VC 的逻辑。)我相信有一条规则,即没有导航 VC 可以“内部”在另一个导航 VC 中。因此,您需要简单地退回到普通的 VC 演示文稿,以便新的导航 VC 不在原始导航 VC 的“内部”。它基本上不会在其中,而是在它之上。

    代码示例:

    [self.navigationController presentViewController:ViewController3 animated:YES completion:nil]
    

    【讨论】:

    • 您好,感谢您的回答。原始视图控制器是详细信息表视图控制器。它嵌入在 splitView 和导航控制器中。我对你的回答很感兴趣,你介意写几行代码来告诉我你到底是什么意思..?再次感谢。
    • 再次感谢......问题是,是 VC2 给了我警告...... +1 试图提供帮助......任何关于 VC2 的想法将不胜感激。
    • 哦,我马上就得出结论,它是 VC3,因为它是推入您发布的代码的那个。除非您发布相关的 segue 代码,否则我无法诊断 VC2:[self performSegueWithIdentifier:@"detailToV2" sender:nil]; @"detailToV2"是个什么样的segue,你在准备segue的过程中做了什么?如果是 push segue,那与我已经描述的基本问题相同。
    猜你喜欢
    • 1970-01-01
    • 2014-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-03
    • 2015-12-04
    • 2013-10-15
    相关资源
    最近更新 更多