在呈现视图控制器之后,关闭呈现的视图控制器

时间:2017-02-21 08:39:38

标签: ios objective-c uiviewcontroller uinavigationcontroller presentmodalviewcontroller

我正在研究一些我没写过的旧代码,而且它的构造效果还不错......

情况是视图控制器以模态方式呈现自定义视图控制器,但是每30秒重新创建一个呈现视图控制器。

这里的问题是,如果发生这种情况时模式在屏幕上,那么任何解雇它的努力都会导致奇怪的行为(例如白屏)。

我尝试在新重新创建的控制器上调用[self.presentedViewController dismissViewControllerAnimated];,但presentedViewController为零,正如您所期望的那样。

我还尝试保留对模态视图控制器的弱引用,然后在重新加载呈现VC时,将该值设置为旧VC的值。这让我可以调用self.customModalVC dismissViewControllerAnimated];,但是这会导致前面提到的白屏,也许是因为它呈现的VC不再存在于堆栈中?

赞赏任何建议。

2 个答案:

答案 0 :(得分:-1)

尝试将导航控制器传递给新呈现的ViewController:

    presentedVC.navigation = self.navigationController

将此添加到新创建的解除

    self.dismiss(animated: false) { 
                _ = self.navigation?.popViewController(animated: true)
            }

答案 1 :(得分:-1)

我认为你应该首先得到视图控制器,它将在堆栈视图层次结构上最后一次并在他身上调用dismiss然后删除作为父级的控制器 how to get top controller see here