视图控制器编程指南就视图控制器的使用说明了这一点:
您创建的每个自定义视图控制器对象负责管理单个视图层次结构中的所有视图。在iPhone应用程序中,视图层次结构中的视图通常覆盖整个屏幕,但在iPad应用程序中,它们可能只覆盖屏幕的一部分。视图控制器与视图层次中视图之间的一对一对应是设计的关键考虑因素。您不应该使用多个自定义视图控制器来管理同一视图层次结构的不同部分。类似地,您不应该使用单个自定义视图控制器对象来管理多个内容屏幕。
我理解,如果我们使用多个自定义视图控制器来控制视图的各个部分(即视图控制器来管理主视图的subViews,然后由视图控制器管理),则默认方法如下:
didReceiveMemoryWarnings
viewWillAppear
viewWillDisappear
viewDidUnload等等将不会被称为。
除此之外,我们为什么不应该使用多个视图控制器来管理视图的子视图,还有什么其他确凿的原因吗?
这些文档还提供了一种替代解决方案,其内容如下:
注意:如果要将视图层次结构划分为多个子区域并分别管理每个分区,请使用通用控制器对象(从NSObject降下来的自定义对象)代替视图控制器对象来管理每个子区域。然后使用单个视图控制器对象来管理泛型控制器对象。
但是没有提到为什么不应该选择多个视图控制器。我的问题是:
我们为什么不喜欢这样呢?
我之所以担心,是因为我更喜欢使用UIViewController的子类来管理我的视图,因为我每次都从nib加载视图,并且为每个视图控制器隔离nib。在项目的后期阶段,很容易适应这些变化。这样做不对吗?我是否应该改变我的编程风格,或者我是否可以继续使用这种方法?
谢谢,
拉杰
发布于 2010-12-02 11:08:26
好吧,我会说“只要它起作用”,你可以继续这样做!但是为了保持“清洁”,我会用我自己的东西。由于ViewControllers的设计考虑了其他通用特性(比如使用导航控制器和选项卡控制器),这使得它对于简单的使用来说有点“沉重”,就像您所做的那样。另外,正如您所提到的,某些事件只有在把viewController的视图添加到主窗口时才会调用。
你不能在Interface中使用自己的对象吗?如果您创建了一个(或多个) UIView IBOutlet,那么它的工作方式应该是相同的。
发布于 2012-06-01 03:04:49
我有一个应用程序,它在一个屏幕上使用两个UIViewControllers。这孩子是UITableViewController。我不依赖子程序的任何UIViewController行为--只依赖于UITableViewController方法。这很方便,因为在其他情况下,子UITableViewController确实管理整个屏幕。在这种情况下,它确实使用了UIViewController方法。有问题的设计?也许吧。两年来它一直运转良好。但我不确定我会推荐这种模式。
https://stackoverflow.com/questions/4333638
复制相似问题