isBeingPresented值不一致

问题描述 投票:0回答:1

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

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

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

文档很少但我不能真正解释这种不一致,除了它可能是一个错误?

ios uinavigationcontroller uikit
1个回答
5
投票

这是预期的行为。 isBeingPresented只有在给定的viewController目前呈现时才是真的(docs):

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.