3

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

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

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

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

由于呈现的视图控制器旨在“接管”交互直到它被解除,所以对我来说,将呈现请求转发给它的父级(或者实际上,沿着 parentViewControllers 链向上直到它到达视图控制器是有意义的) no parentViewController),然后从该视图控制器显示。否则,似乎开发人员可以做一些事情,比如从两个不同的孩子呈现模态视图控制器等,这在我看来是有问题的。(例如,哪个呈现的视图控制器会优先?)。

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

[childViewController presentedViewController];

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

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

4

2 回答 2

2

不久前我在一个容器视图控制器上工作,发现默认实现检查是否parentViewController存在,如果存在,它会将消息传递给父级。

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

于 2012-05-08T02:21:04.677 回答
1

Dr.Touch 在这方面有一篇很棒的帖子:

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

如果您喜欢 View Controller Containers,这是必读的

于 2012-04-27T14:33:06.550 回答