あなたは絶対に電話してはいけません[super loadView]
。ZoomingPDFViewer の例でバグを見つけたと思います。
ビューコントローラーのビュー階層をプログラムで作成する場合はオーバーライドloadView
します(xibを使用しません)。
ご指摘のとおり、ドキュメントには super を呼び出すべきではないと明確に記載されています。
このメソッドのカスタム実装では、super を呼び出さないでください。
これは、xib からビューをロードするためにベースによって使用されるため、xib からのロードとプログラムによるビューの作成の両方を避けるためだと思います。
ビュー コントローラに nib ファイルが関連付けられている場合、このメソッドは nib ファイルからビューをロードします。
また、オブジェクトの割り当て中にUIViewController
nibNameOrNil パラメーターに nil を渡した場合でも、 のUIViewController
実装はloadView
関連付けられたクラス名を含む xib をロードしようとすることに注意してください。
nibName プロパティが nil 以外の値を返す場合、View Controller には関連付けられた nib ファイルがあります。これは、View Controller がストーリーボードからインスタンス化された場合、initWithNibName:bundle: メソッドを使用して明示的に nib ファイルを割り当てた場合、または iOS の場合に発生します。ビュー コントローラのクラス名に基づいた名前のアプリ バンドル内の nib ファイルを検索します。ビュー コントローラーに関連付けられた nib ファイルがない場合、このメソッドは代わりにプレーンな UIView オブジェクトを作成します。
このメソッドの本当の目的は、組み込みの xib 読み込みメカニズムに依存することなく、ビュー階層の構築を完全に制御できるようにすることです。
ビューを手動で作成するために、このメソッドをオーバーライドできます。
個人的には、次loadView
の場合にオーバーライドします: 1.) 作成する xib が本当に些細なものであるか、または 2.) コントロールのレイアウトは非常に動的であるため、静的レイアウトで xib を作成してもほとんどメリットがありません。