视图控制器编程指南中提到了有关视图控制器使用的内容:
每个自定义视图控制器对象都负责管理单个视图层次结构中的所有视图。在iPhone应用程序中,视图层次结构中的视图通常覆盖整个屏幕,但在iPad应用程序中,它们可能仅覆盖屏幕的一部分。一个视图控制器与其视图层次结构中的视图之间的一对一对应关系是关键的设计考虑因素。您不应该使用多个自定义视图控制器来管理同一视图层次结构的不同部分。同样,您也不应该使用单个自定义视图控制器对象来管理多个屏幕的内容。
我理解,如果我们使用多个自定义视图控制器来控制一个视图的不同部分(例如,一个视图控制器来管理主视图的子视图,而这些子视图又由另一个视图控制器管理),那么默认方法如下:
每个自定义视图控制器对象都负责管理单个视图层次结构中的所有视图。在iPhone应用程序中,视图层次结构中的视图通常覆盖整个屏幕,但在iPad应用程序中,它们可能仅覆盖屏幕的一部分。一个视图控制器与其视图层次结构中的视图之间的一对一对应关系是关键的设计考虑因素。您不应该使用多个自定义视图控制器来管理同一视图层次结构的不同部分。同样,您也不应该使用单个自定义视图控制器对象来管理多个屏幕的内容。
我理解,如果我们使用多个自定义视图控制器来控制一个视图的不同部分(例如,一个视图控制器来管理主视图的子视图,而这些子视图又由另一个视图控制器管理),那么默认方法如下:
didReceiveMemoryWarnings
viewWillAppear
viewWillDisappear
viewDidUnload
等等,etc.等将不会被调用。
除此之外,我们不应该使用多个视图控制器来管理视图的各个子视图还有其他坚实的理由吗?
文档也提供了另一种解决方案,如下所示:
注意:如果您想将视图层次结构划分为多个子区域并单独管理每个子区域,请使用通用控制器对象(从NSObject继承的自定义对象)而不是视图控制器对象来管理每个子区域。然后使用单个视图控制器对象来管理通用控制器对象。
但是没有提到为什么不应该首选多个视图控制器。我的问题是:
为什么我们不应该这样做?
我担心这个问题,因为我喜欢使用UIViewController的子类来管理我的视图,因为我每次都从nib中加载它们,我为每个视图控制器隔离nib。在项目的后期更改变得容易。这样做对吗?我必须改变我的编程风格,还是可以采用这种方法?
谢谢,
Raj