我以模态形式提供了一个带有ViewController的NavigationController。

在ViewController中,我可以看到self.navigationController.isBeingPresented为true。

但是,如果我现在将新的ViewController推送到模态显示的NavigationController上,然后弹出回到原始的ViewController,则检查isBeingPresented的同一调用将返回false。

文档稀疏,但是除了可能是错误之外,我无法真正解释这种不一致之处?

最佳答案

这是预期的行为。
仅当给定的isBeingPresented当前为且显示为(docs)时,viewController才为true:



而不是在已经显示的时候。在演示过程中将其设置为true -从导航到该 View Controller 的开始到 View Controller 完全呈现的那一刻,以及所有生命周期事件发生的时间(演示动画完成,调用了viewWillAppear/viewDidAppear回调等) )。在那一刻之后, View Controller 被呈现为,而不是被呈现为,因此isBeingPresented将被而不是设置为true。

首先显示了self.navigationController(通过模式演示),从中弹出 View Controller 不会触发演示。呈现UINavigationController后,将在推送和弹出 View Controller 的整个过程中呈现它。您将必须先对dismiss进行navigationController编码,然后再次将其呈现出来,以使isBeingPresented成为true-因为仅在模态呈现期间才将其呈现。

关于ios - isBeingPresented值不一致,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48401435/

10-12 04:34