阅读iOS中UIViewControllers的更改文档后,我试图弄清楚在自定义容器视图控制器内呈现模态视图控制器之间的交互方式。最终,我想要能够可靠地浏览一系列呈现的视图控制器,即使其中一些控制器是由子视图控制器呈现的。
(我正在开发一个库,而不是应用程序,因此我不会创建我将与之交互的层次结构。我只是试图确保我的库在不同类型的层次结构中可以正确工作。)
所以我的问题归结为,当有人尝试从子视图控制器呈现视图控制器时会发生什么?
由于一个呈现的视图控制器旨在“接管”交互直到被解雇,因此对我来说,将呈现请求转发给其父级(实际上是向上链传递parentViewControllers,直到达到没有parentViewController的视图控制器)并从该视图控制器中显示会很有意义。否则,似乎开发人员可以做出像从两个不同的子类呈现模态视图控制器等事情,这在我看来是有问题的。(例如,哪个呈现的视图控制器会优先?)
此外,如果上面的内容是真的,那么它似乎会有一些影响。如果父视图控制器正在显示一个已呈现的视图控制器,这会返回什么?
(我正在开发一个库,而不是应用程序,因此我不会创建我将与之交互的层次结构。我只是试图确保我的库在不同类型的层次结构中可以正确工作。)
所以我的问题归结为,当有人尝试从子视图控制器呈现视图控制器时会发生什么?
[childViewController presentViewController:viewController animated:YES completion:nil];
由于一个呈现的视图控制器旨在“接管”交互直到被解雇,因此对我来说,将呈现请求转发给其父级(实际上是向上链传递parentViewControllers,直到达到没有parentViewController的视图控制器)并从该视图控制器中显示会很有意义。否则,似乎开发人员可以做出像从两个不同的子类呈现模态视图控制器等事情,这在我看来是有问题的。(例如,哪个呈现的视图控制器会优先?)
此外,如果上面的内容是真的,那么它似乎会有一些影响。如果父视图控制器正在显示一个已呈现的视图控制器,这会返回什么?
[childViewController presentedViewController];
因为父视图正在展示它,所以会是nil
吗?还是这个请求可以转发到父视图,使得parentViewController
及其childViewControllers
都具有相同的结果?
无论如何,我已经准备好一个示例项目来运行一些场景,但我想知道是否有我错过的文档?或者是否已经有人知道这种交互发生的方式?