如果ViewControllerA嵌入在navigationController中,ViewControllerB由ViewControllerA以模态方式显示。
当我打印ViewControllerB的presentsViewController属性时,我发现presentViewController指向导航控制器,而不是ViewControllerA。
但我认为如果presentViewController指向ViewControllerA更合理。
答案 0 :(得分:4)
但我认为如果presentViewController指向ViewControllerA更合理
事情是,你认为合理的事情并不重要。你看到的是它实际上是如何工作的。你的工作就是接受并理解它,而不是不同意它。
导航控制器是呈现视图控制器,因为它是根视图控制器。这是一个全屏演示,因此导航控制器是视图控制器,其视图由显示的视图控制器视图替换。
事实上,发送到视图控制器A 的present
将传递给包含的导航控制器。您可以将视图控制器A告诉present
仅作为一种便利。
查看控制器A由Apple调用" source"视图控制器,因为它是发送present
的视图控制器,但是没有办法通过与视图控制器B交谈来学习它。
(您可能希望阅读this section of my online book,从句子开始,"呈现视图控制器...不一定是您向presentViewController:animated:completion:
发送的视图控制器。&#34 ;在我的书中,我将源视图控制器称为原始演示者。)