viewDidLoad
、init
、viewWillAppear
、およびで行われているのを見てきましたloadView
。さまざまな回答を聞いたことがありますが、決定的な回答が最適であると判断しました。
4 に答える
ほとんどのビューの初期化はで行う必要がありますviewDidLoad
。viewWillAppear
ビューコントローラの生活の中で何度も呼び出すことができるため、適切ではありません。
レイアウトはで行う必要がありますviewWillLayoutSubviews
が、サブビューの実際の作成はに属しviewDidLoad
ます。
loadView
ビューコントローラのルートビューを単純な空以外のものにしたい場合にのみ使用されますUIView
。
パフォーマンスの違いはありません(これらはすべて通常のメソッド呼び出しです...)。
唯一の実際の違いはviewWillAppear:
、ビューが表示されるたびに (1 回だけではなく) 呼び出されることです。そのため、初期化コードを配置するのに適した場所ではありません。ちなみに、他にも 2 つのオプションがあります: init
(または指定されたinitWithWhatever:
) とviewDidLoad
メソッドです。
指定された初期化子。UIViewController をサブクラス化する場合は、NIB を使用していない場合でも、このメソッドのスーパー実装を呼び出す必要があります。(便宜上、デフォルトの init メソッドがこれを行い、このメソッドの両方の引数に nil を指定します。) 指定された NIB で、ファイルの所有者プロキシは、ビュー アウトレットを使用して、そのクラスをビュー コントローラーのサブクラスに設定する必要があります。メイン ビューに接続されます。nib 名を指定してこのメソッドを呼び出すと、このクラスの -loadView メソッドは、View Controller のクラスと同じ名前の NIB をロードしようとします。そのような NIB が実際に存在しない場合は、-setView: を呼び出してから -view を呼び出すか、-loadView メソッドをオーバーライドしてビューをプログラムで設定する必要があります。
上記のテキストは、Apple のドキュメントからのものです。それによると、「loadView」メソッドでそれを行う必要があります。