将视图控制器添加到视图层次结构的正确方法是什么?

问题描述:

我有加载一个视图控制器(B),并使用它的观点在我看来层次视图控制器(A)。如果我将B的视图添加到A的视图层次结构中,并且我没有手动转发像viewWillAppear这样的事件,那么我无法在B控制器中处理它们。 (从viewWillAppear中:文档)将视图控制器添加到视图层次结构的正确方法是什么?

警告:如果属于 视图控制器视图是 层次结构直接加入到一个视图时,视图 控制器将不接收此 消息。如果插入或添加视图 到视图层次,它有一个 视图控制器,你应该直接发送 相关视图控制器此 消息。未能发送显示此消息将 防止任何相关联的动画从 的 视图控制器。

什么是正确的方式巢视图控制器? (就像NavBarController一样。)如果只是需要将一组事件转发给嵌套控制器的问题,那么我需要转发的所有事件是什么?

有没有神奇的解决方案在这里。正确的解决方案是手动发送这些消息。

viewWillAppear:/ viewDidAppear:和viewWillDisappear:/ viewDidDisappear:消息是您需要手动发送到子视图控制器的唯一消息。

您应该实现的父视图控制器这些方法全部四个每当父接收消息和孩子加载同一信息发送到子视图控制器。

此外,当您添加子视图控制器的视图时,如果父视图的控制器的视图为非零,则应发送viewWillAppear:/ viewDidAppear:消息。当你删除视图时,如果父视图的窗口非零,你应该发送viewWillDisappear:/ viewDidDisappear:消息。