viewWillAppear
とのどちらかを入れるのに慣れてviewDidLoad
、わかるまではOKです。viewWillAppear
ただし、いつ入れていつ入れるかをガイドするいくつかのルールが必要だと思いviewDidLoad
ますか?
2 に答える
私が使っている簡単なルールはこれです。viewDidLoad
ビューのリソースが読み込まれるときです。ビューはまだ画面に描画されていません。したがって、ビューのジオメトリとビジュアルを扱う計算とコードはここに配置しないでください。それらはviewWillAppear
orviewDidAppear
メソッドにある必要があります。
また、viewWillAppear は複数回呼び出すことができます
- ポップオーバー/モーダル ビューが表示され、削除された場合
- アラート ビュー/アクションシート/uiactivityController のビューが表示され、削除されたとき。
これらの理由viewWillAppear
から、終了に時間がかかるコードを含めないでください。(少なくともメインスレッドで実行されているコード)。ビュー表示ごとに 1 回だけ実行する必要があるコードも同様です。
他にもあると思いますが、これらは覚えやすいので、お役に立てば幸いです。
viewDidLoad: ビューの読み込みが完了したことを警告します
viewWillAppear: ビューが読み込まれる直前に実行されます
viewDidLoad
あなたが一度しなければならないことです。viewWillAppear
ビューが表示されるたびに呼び出されます。テキストviewDidLoad
の設定など、一度だけ行う必要があることを行う必要があります。UILabel
ただし、ユーザーがビューを表示するたびに、ビューの特定の部分を変更したい場合があります。たとえば 、iPod アプリケーションは、「再生中」ビューに移動するたびに歌詞をスクロールして一番上に戻します。
ただし、サーバーからロードする場合は、レイテンシーについても考慮する必要があります。すべてのネットワーク通信を viewDidLoad または viewWillAppear にパックすると、ユーザーがビューを表示する前にそれらが実行され、アプリが短時間フリーズする可能性があります。最初に、なんらかのアクティビティ インジケーターを備えた未入力のビューをユーザーに表示することをお勧めします。ネットワーキングが完了すると、1 ~ 2 秒かかる場合があります (または、失敗することもあります。誰にもわかりません)、ビューにデータを入力できます。これがどのように行われるかについての良い例は、さまざまな Twitter クライアントで見ることができます。たとえば、Twitterrific で著者の詳細ページを表示すると、ネットワーク クエリが完了するまで、ビューには "読み込み中..." としか表示されません。