ViewController 的presentingViewController 设置错误?

xim*_*iao 2 uiviewcontroller ios

如果 ViewControllerA 嵌入到 navigationController 中,并且 ViewControllerB 由 ViewControllerA 模态呈现。

当我打印 ViewControllerB 的presentingViewController 属性时,我发现presentingViewController 指向导航控制器,而不是ViewControllerA。

但我认为如果presentingViewController 指向ViewControllerA 更合理。

mat*_*att 5

但我认为如果presentingViewController指向ViewControllerA更合理

问题是,你认为什么是合理的并不重要。你看到的是它实际上是如何工作的。你的工作是接受和理解它,而不是不同意它。

导航控制器是呈现视图控制器,因为它是根视图控制器。这是一个全屏演示,因此导航控制器是视图控制器,其视图被呈现的视图控制器的视图替换。

事实上,你present发送到视图控制器 A被传递到包含导航控制器。你可以告诉视图控制器 Apresent只是为了一种方便。

视图控制器 A 被 Apple 称为“源”视图控制器,因为它是present发送到的视图控制器,但无法从与视图控制器 B 的对话中了解到这一点。

(你可能想阅读我的在线书籍的这一部分,从句子开始,“呈现视图控制器......不一定是你发送到的视图控制器presentViewController:animated:completion:。”在我的书中,我将源视图控制器称为原始视图控制器主持人。)