1

ビューが最初に表示されたときに一度だけ呼び出される UIViewController のメソッドはどれですか?

私が尋ねている理由は、NSNotificationCenter の addObserver メソッドを呼び出す必要があり、一度だけ実行する必要があるためです。また、ビューが見えなくなったときに removeObserver を呼び出す必要はありません。(実際には、ビューが見えないときに通知を受け取ると、いくつかの軽い処理を行います。)

ベスト プラクティスは何ですか - どのメソッドを呼び出す必要がありますか? それはviewDidLoadメソッドですか - このメソッドが一度だけ呼び出され、その後ビューが表示されたときに呼び出されないかどうかは誰でも確認できますか?

4

4 に答える 4

5

ビュー コントローラーがそのリソースをプログラムで割り当てる場合は、ビュー コントローラーに固有のカスタム初期化メソッドを作成します。このメソッドは、スーパー クラスの init メソッドを呼び出してから、クラス固有の初期化を実行する必要があります。

一般に、複雑な初期化メソッドを記述しないでください。代わりに、単純な初期化メソッドを実装してから、ビュー コントローラーのクライアントにプロパティを提供して、その動作を構成します。

2ステップ、

  • ビュー コントローラはその loadView メソッドを呼び出します

  • ビュー コントローラーがストーリーボードに関連付けられている場合は、ストーリーボードからビューを読み込みます。ビュー コントローラーがストーリーボードに関連付けられていない場合、空の UIView オブジェクトが作成され、ビュー プロパティに割り当てられます。

ビュー コントローラはその viewDidLoad メソッドを呼び出します。これにより、サブクラスが追加のロード時間タスクを実行できるようになります。

この図は、より良いアイデアを与えることができます

ここに画像の説明を入力

于 2012-10-11T11:29:21.450 に答える
1
-(id)initWithNibName - or -
-(id)init

どのような条件でも一度だけ呼び出されます

懸念される限り、viewDidLoadこれも 1 回呼び出されますが、メモリ警告が受信されるとトリガーされます (iOS 6 ではありません)。コントローラの viewDidLoad は、メモリ過負荷のために viewDidUnload がトリガーされた後に呼び出されます。

于 2012-10-11T11:21:48.517 に答える
1

オブザーバーの場合は、ARC の下であっても、初期化メソッドの 1 つで観察を開始し、nib または viewDidLoad から起動し、deallocメソッドで観察の登録を解除します。

于 2012-10-11T11:58:21.070 に答える
0

はい- (void)viewDidLoad、メソッドは、ビューがプロセスをロードしているときに最初に呼び出されます -(void)viewWillAppear:(BOOL)animatedメソッドは、ビューがプロセスを提示するときに呼び出されます

ただし、一度に呼び出すメソッドを作成する場合は、メソッドの GLOBALIZATION を使用すると、-(id)init一度だけ呼び出されます。

于 2012-10-11T11:19:08.047 に答える