ios isBeingPresented值不一致

vsikbqxv  于 5个月前  发布在  iOS
关注(0)|答案(2)|浏览(101)

我以模态的方式呈现了一个带有ViewController的NavigationController。
在ViewController中,我可以看到self.navigationController.isBeingPresented为true。

  • 但是 * 如果我现在在模态呈现的NavigationController上推送一个新的ViewController并弹回到原始ViewController,那么检查isBeingPresented的相同调用将返回false。

文档是稀疏的,但我真的不能解释这种不一致,除了它可能是一个错误?

628mspwn

628mspwn1#

这是预期的行为。isBeingPresented仅在给定的viewController当前正在呈现(docs)时为真:
一个布尔值,指示是否显示视图控制器。
它在呈现过程中被设置为true-从开始导航到视图控制器的点到视图控制器完全呈现的时刻,以及所有生命周期事件发生的时刻(演示动画完成,viewWillAppear/viewDidAppear回调被调用,等等)。之后,视图控制器被呈现,但是没有被呈现,因此isBeingPresented不再**被设置为true。
首先介绍了self.navigationController(通过模态呈现),从它弹出视图控制器不会触发呈现。呈现UINavigationController后,在推和弹出视图控制器的过程中,它会一直呈现。您必须dismissnavigationController,然后再次将其呈现为isBeingPresentedtrue-因为仅在模态呈现期间才呈现它。

uemypmqf

uemypmqf2#

如前所述,此属性仅在表示期间为真(注意使用的动词“being”)。
如果你试图确定你的视图控制器,或者它的导航控制器,是否存在,试试这个:

if self.navigationController?.presentingViewController != nil {
    // is presented, eg modally
}

字符串

相关问题