View控制器编程指南说明了有关视图控制器用法的信息:
每个自定义视图控制器对象 create负责管理所有人 在单个视图中的视图 层次结构。在iPhone应用程序中 视图层次结构中的视图 传统上覆盖整个屏幕, 但在iPad应用程序中他们可能会 仅覆盖屏幕的一部分。 一对一的对应关系 视图控制器及其中的视图 视图层次结构是关键设计 考虑。 你不应该使用 多个自定义视图控制器 管理相同的不同部分 查看层次结构。同样,你 不应该使用单个自定义视图 控制器对象来管理多个 屏幕值得内容。
据我所知,如果我们使用多个自定义视图控制器来控制视图的各个部分(即视图控制器来管理主视图的子视图,而主视图又由视图控制器管理),则默认方法如下:
didReceiveMemoryWarnings
viewWillAppear
viewWillDisappear
viewDidUnload
等。不会被称为。
除此之外,我们不应该使用多个视图控制器来管理视图的相应子视图吗?
该文档还提供了另一种解决方案,其内容如下:
注意:如果要分割视图 层次结构分为多个子区域和 分别管理每一个,使用 通用控制器对象(自定义 来自NSObject的对象) 而不是视图控制器对象 管理每个分区。然后用一个 查看控制器对象来管理 通用控制器对象。
但是没有提及为什么不应该首选多个视图控制器。我的问题是:
为什么我们不应该这样喜欢呢?
我很担心,因为我更喜欢使用UIViewController的子类来管理我的视图,因为我每次从nib加载它们并且我为每个视图控制器分隔nib。在项目的后期阶段变得容易满足变化。这是错的吗?我是否必须改变我的编程风格,或者如果我采用这种方法可以吗?
谢谢,
拉吉
答案 0 :(得分:3)
好吧,我会说“只要它有效”,你可以像往常一样继续做! 但为了让事情“更清洁”,我会使用自己的物品。 由于ViewControllers在设计时考虑了其他一般功能(例如使用导航控制器和标签栏控制器),这使得它对于简单的使用来说有点“沉重”,就像你一样。 另外,正如您所提到的,只有在将viewController的视图添加到主窗口时才会调用某些事件。
您不能在Interface Builder中使用自己的对象吗?如果你创建一个(或几个)UIView IBOutlet,它应该是相同的。
答案 1 :(得分:0)
我有一个在单个屏幕上使用两个UIViewControllers的应用程序。子是一个UITableViewController。我不依赖于孩子的任何UIViewController行为 - 只有UITableViewController方法。这很方便,因为在其他情况下,子UITableViewController管理整个屏幕。在这种情况下,它确实使用UIViewController方法。可疑的设计?也许。它已经工作了两年了。但我不确定我会推荐这种模式。