你绝对不应该打电话[super loadView]
。我想说您在 ZoomingPDFViewer 示例中发现了一个错误。
loadView
当您想以编程方式为您的视图控制器创建视图层次结构(不使用 xib)时,您会覆盖。
正如您所指出的,文档明确指出您不应调用 super。
此方法的自定义实现不应调用 super。
我假设这是为了避免从 xib 加载和以编程方式创建视图,因为基础使用此方法从 xib 加载视图:
如果视图控制器具有关联的 nib 文件,则此方法从 nib 文件加载视图。
还要注意,即使在分配UIViewController
对象期间,您将 nil 传递给 nibNameOrNil 参数,该参数的UIViewController
实现loadView
将尝试加载其中具有关联类名的任何 xib。
如果 nibName 属性返回非 nil 值,则视图控制器具有关联的 nib 文件,如果视图控制器是从情节提要中实例化的,如果您使用 initWithNibName:bundle: 方法显式为其分配了一个 nib 文件,或者如果 iOS在应用程序包中找到一个 nib 文件,其名称基于视图控制器的类名。如果视图控制器没有关联的 nib 文件,则此方法将创建一个普通的 UIView 对象。
此方法的真正目的是让您完全控制构建视图层次结构,而无需依赖内置的 xib 加载机制。:
您可以覆盖此方法以手动创建视图。
就个人而言,loadView
如果出现以下情况,我会覆盖: 1.) 我将为它制作的 xib 真的很微不足道或 2.) 控件的布局是非常动态的,因此创建具有静态布局的 xib 几乎没有什么好处。