当我们访问视图控制器的视图属性时,它总是代表整个屏幕还是可以是部分屏幕?
间接地说,一个视图控制器可以有多个视图属性吗?
donkim 是对的,但不要相信我的话;)
请参阅 Rincewind 的这篇文章:https://devforums.apple.com/thread/81930以及其他 Apple 员工在其论坛上发表的任何数量的旧评论。
如果我明白你是什么
说,你创建了另一个视图
控制器(BlueViewController)和
将其视图添加为另一个视图的子视图
视图控制器?如果是这样,那么这就是
文档涵盖 – 特别是
说不要这样做,因为它不是
支持的。
视图控制器是
旨在管理整个屏幕
内容的价值。如果你想
进一步细分您的内容,然后
建议您使用对象
除了 a 的子类之外
UIViewController 来管理这些
子区域并管理这些对象
带有 UIViewController 子类。
此外我们还有UIViewController 类参考其中指出:
您使用 UIViewController 的每个实例来管理视图层次结构。典型的视图层次结构由根视图(此类的视图属性中提供的引用)和通常呈现实际内容的一个或多个子视图组成。在 iPhone 和 iPod touch 上,根视图通常会填充整个屏幕,但在 iPad 上,此视图可能仅填充部分屏幕。在这两种情况下,视图控制器负责管理整个视图层次结构,包括所有子视图。
还有查看 iOS 控制器编程指南:
根视图充当与视图控制器关联的所有其他视图的容器。您通常会为此视图定义框架以匹配应用程序窗口的大小,应用程序窗口本身应填满屏幕。但是,视图控制器还会根据需要调整框架大小,以适应各种视图的存在,例如系统状态栏、导航栏或选项卡栏。
不幸的是,这些都没有我想要的那么明确whyUIViewController 做出这些假设,以及何时可以安全地打破它们。据我所知,在不访问 UIKit 代码的情况下,UIKit 假设单个视图控制器将负责给定屏幕的内容。因此,在某些情况下,如果单个窗口中有多个可见的视图控制器,它会仅向一个(或可能仅某些)视图控制器发送 -viewWillAppear: 或 -didRecieveMemoryWarning 等消息。尽管我最近没有测试所有这些,但应该至少可以通过几种不同的方式来证明这一点,因此我将不再讨论其他用户报告的问题。
嵌套视图控制器不会收到 -didReceiveMemoryWarning
如果在呈现模态视图控制器并且随后关闭模态时发生旋转,则多视图控制器的视图将不会旋转。
有时期望视图控制器的视图填充窗口并且是不透明的,因此在它们未覆盖的窗口区域中绘制的内容可能是未定义的。尝试呈现一个不填满屏幕的模态视图控制器不会渲染底层视图,至少在 iOS 3.1.x 或我尝试的最后一个版本中是这样。
尝试直接回答 hmthur 的问题。 UIViewController 应该有一个根视图(它的“view”属性),它填充窗口并且可以调整大小以适应状态栏、选项卡栏等。该控制器可以具有该根视图的任意数量的子视图以及引用这些子视图的属性。
作为进一步的更新,请考虑此线程“创建容器 UIViewController 子类?” 在 Apple 开发者论坛上(讨论设置parentViewController
为了构建自定义容器视图控制器)。
所有 UIKit ivars 都被视为私有,不支持直接访问,包括通过 setValue:forKey: 进行访问。设置这个 ivar 的方法也是私有的。
至于这个ivar [parentViewController],我会警告你它的行为可能会改变。
不幸的是,我没有任何好的替代建议,但就其价值而言,我们确实认识到创建容器视图控制器的困难。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)