【问题标题】:What's the proper way to add a view controller to the view hierarchy?将视图控制器添加到视图层次结构的正确方法是什么?
【发布时间】:2010-12-03 14:25:08
【问题描述】:

我有一个视图控制器 (A),它加载一个视图控制器 (B) 并在我的视图层次结构中使用它的视图。如果我将 B 的视图添加到 A 的视图层次结构中,并且我不手动转发 viewWillAppear 之类的事件,我无法在 B 控制器中处理它们。 (来自viewWillAppear:docs)

警告:如果视图属于 视图控制器被添加到视图中 层次结构直接,视图 控制器不会收到这个 信息。如果您插入或添加视图 到视图层次结构,它有一个 视图控制器,你应该发送 关联的视图控制器 this 直接留言。发送失败 视图控制器此消息将 阻止任何关联的动画 正在显示。

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

【问题讨论】:

    标签: iphone objective-c


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 现在还是这样吗?如果是这样,Apple 有记录吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多