代码之家  ›  专栏  ›  技术社区  ›  Douglas Mayle

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

  •  5
  • Douglas Mayle  · 技术社区  · 15 年前

    我有一个视图控制器(A),它加载一个视图控制器(B),并在我的视图层次结构中使用它的视图。如果我将b的视图添加到a的视图层次结构中,并且不手动转发像viewwillappear这样的事件,我就无法在b控制器中处理它们。(从视图将显示:docs)

    警告:如果视图属于 视图控制器添加到视图中 层次结构直接,视图 控制器将不接收此 消息。如果插入或添加视图 到视图层次结构,它具有 视图控制器,您应该发送 关联视图控制器此 直接发送消息。未能发送 查看控制器此消息将 阻止任何关联的动画 正在显示。

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

    1 回复  |  直到 9 年前
        1
  •  5
  •   Matt Gallagher    15 年前

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

    视图将显示:/viewdid显示:和viewwill消失:/viewdid消失:消息是您需要手动发送到子视图控制器的唯一消息。

    您应该在父视图控制器中实现所有这四种方法,并在父视图控制器接收到消息并加载子视图控制器时向子视图控制器发送相同的消息。

    此外,添加子视图控制器的视图时,如果父视图的view.window非空,则应发送viewwillappear:/viewdidappear:messages。删除视图时,如果父级的view.window非空,则应发送viewwill消失:/viewdid消失:消息。