【发布时间】:2012-04-27 02:54:07
【问题描述】:
阅读有关 iOS 中 UIViewControllers 更改的文档,我试图弄清楚呈现模式视图控制器之间的交互如何在自定义容器视图控制器内部工作。最终,我希望能够可靠地遍历一系列呈现的视图控制器,即使其中一些控制器是由子视图控制器呈现的。
(我正在开发一个库,而不是应用程序,所以我没有创建我将与之交互的层次结构。我只是想确保我的库能够在不同类型的层次结构中正常工作。)
所以我的问题归结为,当有人试图从子视图控制器呈现视图控制器时会发生什么?
[childViewController presentViewController:viewController animated:YES completion:nil];
由于呈现的视图控制器旨在“接管”交互直到它被解除,对我来说呈现请求将被转发到它的父级(或者实际上,在 parentViewControllers 链上直到它到达一个没有 parentViewController 的视图控制器),然后从该视图控制器显示。否则,似乎开发人员可以做一些事情,比如从两个不同的孩子呈现模态视图控制器等,这在我看来是有问题的。 (例如,哪个呈现的视图控制器会优先?)。
此外,如果上述情况属实,它似乎会产生一些影响。如果父视图控制器正在显示呈现的视图控制器,这将返回什么?
[childViewController presentedViewController];
会不会是nil,因为父级正在显示它?或者是否可以将此请求转发给父级,以便parentViewController 及其任何childViewControllers 都具有相同的结果?
无论如何,我已经准备好一个示例项目来开始运行一些场景,但我很好奇是否有我遗漏的文档?或者如果有人已经知道这种交互发生的方式?
【问题讨论】:
标签: ios uikit modalviewcontroller parentviewcontroller childviewcontroller