1

viewDidLoadinitviewWillAppear、およびで行われているのを見てきましたloadView。さまざまな回答を聞いたことがありますが、決定的な回答が最適であると判断しました。

4

4 に答える 4

2

ほとんどのビューの初期化はで行う必要がありますviewDidLoadviewWillAppearビューコントローラの生活の中で何度も呼び出すことができるため、適切ではありません。

レイアウトはで行う必要がありますviewWillLayoutSubviewsが、サブビューの実際の作成はに属しviewDidLoadます。

loadViewビューコントローラのルートビューを単純な空以外のものにしたい場合にのみ使用されますUIView

于 2013-02-25T18:52:50.517 に答える
0

パフォーマンスの違いはありません(これらはすべて通常のメソッド呼び出しです...)。

唯一の実際の違いはviewWillAppear:、ビューが表示されるたびに (1 回だけではなく) 呼び出されることです。そのため、初期化コードを配置するのに適した場所ではありません。ちなみに、他にも 2 つのオプションがあります: init(または指定されたinitWithWhatever:) とviewDidLoadメソッドです。

于 2013-02-25T18:52:42.427 に答える
0

指定された初期化子。UIViewController をサブクラス化する場合は、NIB を使用していない場合でも、このメソッドのスーパー実装を呼び出す必要があります。(便宜上、デフォルトの init メソッドがこれを行い、このメソッドの両方の引数に nil を指定します。) 指定された NIB で、ファイルの所有者プロキシは、ビュー アウトレットを使用して、そのクラスをビュー コントローラーのサブクラスに設定する必要があります。メイン ビューに接続されます。nib 名を指定してこのメ​​ソッドを呼び出すと、このクラスの -loadView メソッドは、View Controller のクラスと同じ名前の NIB をロードしようとします。そのような NIB が実際に存在しない場合は、-setView: を呼び出してから -view を呼び出すか、-loadView メソッドをオーバーライドしてビューをプログラムで設定する必要があります。

上記のテキストは、Apple のドキュメントからのものです。それによると、「loadView」メソッドでそれを行う必要があります。

于 2013-02-25T19:49:47.783 に答える