iOS容器视图控制器 - 为什么transitionFromViewController需要fromViewController?

时间:2012-02-03 04:18:41

标签: ios uiviewcontroller

当使用自定义容器视图控制器时,我不太明白为什么呈现视图控制器需要指定from,因为作为容器类,它应该已经知道视图层次结构中的内容,不是吗?

transitionFromViewController:toViewController:duration:options:animations:completion:

2 个答案:

答案 0 :(得分:1)

容器视图控制器有时需要将所包含控制器的视图放入其自己视图的特定子视图中。 (例如,SplitViewController重新实现可能有左右定位视图分别保存主视图和详细控制器视图。)提供fromViewController告诉UIViewController在视图层次结构中应该插入新控制器的视图,以及应该删除哪个特定视图在动画之后。

(与另一个答案相反,视图的 frames 根本没有为你设置。你可以在调用之前和动画块中这样做。“{{3} “文档中的系统指南有一个很好的例子。”

实际上,实际使用transitionFromViewController:...似乎是可选的。您可以手动管理视图层次结构,无论是否有动画,它都可以正常工作。我仍然在形成自己的观点,但我认为我更喜欢手动操作,以便更轻松地处理其中一个VC为零的情况。

答案 1 :(得分:0)

这样做是为了让您拥有一个视图控制器,其中包含viewControllers的视图。 from定义了原始视图控制器,并使系统能够适当地定位动画。

成像你有一个包含4个视图的视图,就像瓷砖一样。主视图控制器可以在其“子”视图控制器上连续调用它,并使用from - >对于规范,它不会假设调用者来自viewController。