我以模态的方式呈现了一个带有ViewController的NavigationController。
在ViewController中,我可以看到self.navigationController.isBeingPresented
为true。
- 但是 * 如果我现在在模态呈现的NavigationController上推送一个新的ViewController并弹回到原始ViewController,那么检查
isBeingPresented
的相同调用将返回false。
文档是稀疏的,但我真的不能解释这种不一致,除了它可能是一个错误?
2条答案
按热度按时间628mspwn1#
这是预期的行为。
isBeingPresented
仅在给定的viewController
当前正在呈现(docs)时为真:一个布尔值,指示是否显示视图控制器。
它在呈现过程中被设置为true-从开始导航到视图控制器的点到视图控制器完全呈现的时刻,以及所有生命周期事件发生的时刻(演示动画完成,
viewWillAppear
/viewDidAppear
回调被调用,等等)。之后,视图控制器被呈现,但是没有被呈现,因此isBeingPresented
将不再**被设置为true。首先介绍了
self.navigationController
(通过模态呈现),从它弹出视图控制器不会触发呈现。呈现UINavigationController
后,在推和弹出视图控制器的过程中,它会一直呈现。您必须dismiss
navigationController
,然后再次将其呈现为isBeingPresented
为true
-因为仅在模态呈现期间才呈现它。uemypmqf2#
如前所述,此属性仅在表示期间为真(注意使用的动词“being”)。
如果你试图确定你的视图控制器,或者它的导航控制器,是否存在,试试这个:
字符串