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