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」メソッドでそれを行う必要があります。