3

阅读有关iOS中UIViewControllers更改的文档,试图弄清楚呈现模式视图控制器之间的交互如何在自定义容器视图控制器内工作。最终,我希望能够做的就是可靠地遍历所呈现的视图控制器链,即使这些控制器中的一些由子视图控制器呈现。我正在创建一个库,而不是一个应用程序,所以我没有创建我将与之交互的层次结构,我只是试图确保我的库在不同类型的层次结构内正常工作。)呈现/呈现视图控制器和父/子视图控制器之间的交互是否在任何地方记录?

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

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

由于呈现视图控制器意,直到它被驳回“接管”互动,这将使意义,我认为发言请求将期待它的父(或实际上,高达parentViewControllers链直到它到达没有parentViewController的视图控制器),然后从该视图控制器中显示。否则,看起来好像开发人员可以像两个不同的孩子一样执行现有的模式视图控制器等等,这在我看来是有问题的。 (例如,哪个视图控制器会优先?)。

此外,如果上述内容属实,似乎会有一些暗示。如果父视图控制器正在显示一个呈现的视图控制器,这会返回什么?

[childViewController presentedViewController]; 

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

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

回答

2

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

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

+0

你和我的经验是一样的。感谢您的反馈。 – 2012-05-08 11:52:08

1

Dr.Touch具有优良的正是后上:

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

它是必须的,如果你到视图控制器容器

+0

这是一篇关于如何制作容器视图控制器的好帖子,但不幸的是,它没有任何与我的问题相关的内容。从iOS 5开始,UIViewController有两套apis,一套用于设置父子层次结构,另一套用于从另一个“呈现”视图控制器。我的问题涉及这两个API之间的交互。这篇博客文章仅讨论这些主题中的第一个,根本没有提到第二个主题。 – 2012-04-30 03:00:48

相关问题