模态演示强制导航控制器弹出到根

时间:2015-06-25 21:53:35

标签: ios objective-c uinavigationcontroller

我遇到一个奇怪的问题,我似乎无法找到原因。

当尝试在导航控制器上显示模态视图控制器时,导航控制器会在取消模式时弹出下面的所有视图控制器。

所以在推动一些视图控制器并在topViewController上显示一个模态后,当模态被解除时,我最终回到了rootViewController。

最近有人发生过这种情况,我似乎无法找到导致这种情况发生的原因吗?

1 个答案:

答案 0 :(得分:0)

这个答案适用于@rshev:

实际上是用户错误。这是发生了什么:我有一个视图控制器,手动添加了navigationController(作为子视图/子VC)。然后导航控制器在其堆栈中有3个VC。第三个(也是可见的)VC呈现了一个图像选择器控制器。当图像选择器被解雇时,我暂时看到了我的第三个VC,然后它迅速弹回到第一个,从记忆中丢弃了另外两个VC。

出了什么问题?我没有意识到的是viewDidAppear(和viewWillAppear)是在我的内容视图控制器(具有导航控制器的子视图的控制器)上调用的。这个内容VC实际上是在viewDidAppear上设置其导航控制器(并将其添加为子视图),从而掩盖了原始导航控制器。

为了解决这个问题,我只添加了一个静态布尔值来确定第一个VC FIRST何时出现,如下所示:

- (void) viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];

    static BOOL firstAppearance = YES;

    if (firstAppearance)
    {
        firstAppearance = NO;

        UINavigationController *navController = [self.storyboard instantiateViewControllerWithIdentifier:@"NavigationController"];
        [navController.view setFrame:self.view.bounds];

        [self.view addSubview:navController.view];

        [self addChildViewController:navController];

        [navController didMoveToParentViewController:self];
    }
}

希望有所帮助。