ViewController的presentViewController设置错误了吗?

时间:2016-12-13 05:01:23

标签: ios uiviewcontroller

如果ViewControllerA嵌入在navigationController中,ViewControllerB由ViewControllerA以模态方式显示。

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

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

1 个答案:

答案 0 :(得分:4)

  

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

事情是,你认为合理的事情并不重要。你看到的是它实际上是如何工作的。你的工作就是接受并理解它,而不是不同意它。

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

事实上,发送到视图控制器A present传递给包含的导航控制器。您可以将视图控制器A告诉present仅作为一种便利。

查看控制器A由Apple调用" source"视图控制器,因为它是发送present的视图控制器,但是没有办法通过与视图控制器B交谈来学习它。

(您可能希望阅读this section of my online book,从句子开始,"呈现视图控制器...不一定是您向presentViewController:animated:completion:发送的视图控制器。&#34 ;在我的书中,我将源视图控制器称为原始演示者。)