我以模态方式呈现了一个带有ViewController的NavigationController。
在ViewController中,我可以看到self.navigationController.isBeingPresented
是真的。
但是,如果我现在在模态呈现的NavigationController上推送一个新的ViewController并弹回到原始的ViewController,则检查isBeingPresented
的相同调用将返回false。
文档很少但我不能真正解释这种不一致,除了它可能是一个错误?
这是预期的行为。 isBeingPresented
只有在给定的viewController
目前呈现时才是真的(docs):
一个布尔值,指示是否正在显示视图控制器。
而不是它已经呈现。在演示过程中将其设置为true - 从导航到该视图控制器的时间点开始,直到视图控制器完全呈现的时刻,以及所有生命周期事件发生(演示动画完成,调用viewWillAppear
/ viewDidAppear
回调等) )。在那之后,呈现视图控制器,但没有呈现,因此isBeingPresented
将不再设置为true。
首先呈现self.navigationController
(通过模态演示),从中弹出视图控制器不会触发演示。在呈现UINavigationController
之后,它会在推动和弹出视图控制器的过程中呈现整个时间。你将不得不dismiss
navigationController
,然后再次呈现为isBeingPresented
为true
- 因为只有在模态演示时它才被呈现。