如何正确将视图控制器添加到视图层次结构中?

7
我有一个视图控制器(A),它加载了另一个视图控制器(B)并将其视图用于我的视图层次结构。如果我将B的视图添加到A的视图层次结构中,并且我没有手动转发像viewWillAppear这样的事件,那么我就无法在B控制器中处理它们。(来自viewWillAppear:文档)
警告:如果视图控制器所属的视图直接添加到视图层次结构中,则视图控制器将不会收到此消息。如果您插入或添加一个具有视图控制器的视图到视图层次结构中,则应直接向关联的视图控制器发送此消息。未能向视图控制器发送此消息将防止任何相关的动画被显示。
正确嵌套视图控制器的方法是什么?(就像NavBarController一样) 如果只是需要将一组事件转发到嵌套控制器,那么我需要转发哪些事件?
1个回答

5

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

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

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

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


这是否仍然成立,如果是,苹果是否有记录? - Jan Nash

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接