呈现/呈现视图控制器与父/子视图控制器之间的交互是否记录在任何地方?

时间:2012-04-27 02:54:07

标签: ios uikit modalviewcontroller parentviewcontroller childviewcontroller

阅读有关iOS中UIViewControllers更改的文档,我试图弄清楚呈现模式视图控制器之间的交互如何在自定义容器视图控制器内工作。最终,我希望能够可靠地完成一系列呈现的视图控制器,即使其中一些控制器是由子视图控制器呈现的。

(我正在开发一个库,而不是应用程序,因此我不会创建我将要与之交互的层次结构。我只是想确保我的库在不同类型的层次结构中正常工作。)

所以我的问题归结为,当有人试图从子视图控制器呈现视图控制器时会发生什么?

[childViewController presentViewController:viewController animated:YES completion:nil];

由于呈现的视图控制器旨在“接管”交互直到它被解除,因此对我来说,表示请求将转发到其父级(或者实际上,直到它到达的父级链接之前)是有意义的。查看没有parentViewController的控制器)然后从该视图控制器显示。否则,似乎开发人员可以做两件不同的孩子等现在的模态视图控制器,这在我看来是有问题的。 (例如,哪个呈现的视图控制器优先?)。

此外,如果上述情况属实,似乎会产生一些影响。如果父视图控制器正在显示一个呈现的视图控制器,那么它将返回什么?

[childViewController presentedViewController];

它是nil,因为父母正在显示它吗?或者可以将此请求转发给父级,以便parentViewController及其任何childViewControllers都具有相同的结果?

无论如何,我有一个示例项目准备开始运行一些场景,但我很好奇是否有任何文档我错过了?或者,如果有人已经知道这种互动的方式?

2 个答案:

答案 0 :(得分:2)

前段时间我在容器视图控制器上工作,发现默认实现检查parentViewController是否存在,如果存在,则将消息传递给父级。

我找不到任何关于它的文档,所以你不能100%依赖它。

答案 1 :(得分:1)

Dr.Touch正好有一篇文章:

http://www.cocoanetics.com/2012/04/containing-viewcontrollers/

如果您使用的是View Controller Containers

,则必须阅读