isBeingPresented值不一致

时间:2018-01-23 12:12:06

标签: ios uinavigationcontroller uikit

我以模态方式呈现了一个带有ViewController的NavigationController。

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

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

文档很少但我无法解释这种不一致性,除非它可能是一个错误?

1 个答案:

答案 0 :(得分:5)

这是预期的行为。 isBeingPresented仅在给定viewController目前 <{3}}时才有效:

  

一个布尔值,指示是否正在显示视图控制器。

而不是它已经呈现。在演示过程中将其设置为true - 从导航到该视图控制器的时间点开始,直到视图控制器完全呈现的时刻,以及所有生命周期事件发生(演示动画已完成,viewWillAppear / {{调用了1}}回调,等等。在那之后,视图控制器 呈现,但 ,因此viewDidAppear设置为true了。

首先呈现isBeingPresented(通过模态演示),从中弹出视图控制器不会触发演示。在呈现self.navigationController之后,在推送和弹出视图控制器的过程中呈现整个时间。您必须UINavigationController dismiss,然后再次为navigationController呈现isBeingPresented - 因为只有在模态演示期间才会显示它。