objective-c - 添加childViewController到底有什么意义呢?

标签 objective-c xcode uiviewcontroller

我有一个parentViewController。

parentViewController 有 3 个子级。

安 Controller , 鲍勃 Controller , 查理 Controller

(非真实姓名)

任何时候都只能存在一个这样的 Controller 的 View 。转换完成:

[self transitionFromViewController:fromController toViewController:toViewController duration:duration options:options animations:animations completion:^(BOOL finished)

一切正常。

但是添加 Ann、Bob 和 Charlie 作为 Parent 的子项有什么意义呢?

起初我以为是这样,viewWillAppear 和 viewWillDisappear 在transitionFromViewController期间被自动调用

但是无论 viewController 是否是 subview ,它都会被调用。

可能是这样,当 parent 被调用时,viewWillAppear 和 viewWillDisappear 也被调用。但这很容易做到。

当然,只有实际上位于 ParentController.view 的 View 层次结构中的 View 才会调用其 viewWillAppear 和 viewWillDisappear 对吗?或者是吗?

那么 Ann、Bob 和 Charlie 是 Parent Controller 的 child 这一事实究竟意味着什么呢?

在父级的 viewWillAppear 中,当且仅当 childController 的 View 是层次结构的一部分时,它会遍历所有子级并调用它们的 viewWillAppear 吗?或者什么?

事实上,这个事实是什么

注意:我很清楚 View 包含的含义。我问它具体是做什么的?例如,其中一个答案说它会轮换传递。是的。但它是否对所有 subview 或唯一 View 位于parentViewController.view 层次结构中的 subview 执行此操作?或者什么?

最佳答案

简短回答: 添加 childViewController 允许您将 View Controller 中的事件重定向到已定义的具有其子级的其他 Controller 。

长答案: addChildViewControlleriOS 5 及更高版本的一部分。这是一个称为“ View Controller 包含”的功能。这背后的基本思想是您可以将 View Controller 嵌入到您自己的其他 View Controller 中。它很强大,因为它允许您编写自己的 tabViewControllercustomNavigationController 例如

关于 View Controller 包含的主要事情是它尝试确保所有包含的 View Controller 都会收到适当的消息。一个简单的例子是,当您旋转设备时,如果您没有添加 addChildViewController ,旋转更改事件将不会传递到您的 View 层次结构。

像您提到的调用(viewWillAppear,viewWillDisappear)这样的 View 周期是由 View Controller 管理的,所以这是一个不同的故事。

查看官方doc更好地了解自定义容器 Controller 的强大功能。

关于objective-c - 添加childViewController到底有什么意义呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13045090/

相关文章:

objective-c - 如何为 UIImageView 随机器实现滑动手势

ios - UIScrollview 第二次没有正确显示

iphone - 如何让 UINavigationController 在推送 UIViewController 时使用翻转动画

ios - NavigationController 中的 TabBarController 不会在 viewControllers 中显示 TabBar

ios - 升级iOS应用程序

ios - 我在 Xcode 中更改了我的项目名称,现在当我运行它时出现错误

ios - Interface Builder 和模拟器中的大小不同

iOS 自定义过渡和旋转

ios - 文本渲染 iOS - 渲染快速变化的文本的最高效方式

swift - 以编程方式更改 scn 对象的 Material