5

viewWillAppearとのどちらかを入れるのに慣れてviewDidLoad、わかるまではOKです。viewWillAppearただし、いつ入れていつ入れるかをガイドするいくつかのルールが必要だと思いviewDidLoadますか?

4

2 に答える 2

11

私が使っている簡単なルールはこれです。viewDidLoadビューのリソースが読み込まれるときです。ビューはまだ画面に描画されていません。したがって、ビューのジオメトリとビジュアルを扱う計算とコードはここに配置しないでください。それらはviewWillAppearorviewDidAppearメソッドにある必要があります。

また、viewWillAppear は複数回呼び出すことができます

  1. ポップオーバー/モーダル ビューが表示され、削除された場合
  2. アラート ビュー/アクションシート/uiactivityController のビューが表示され、削除されたとき。

これらの理由viewWillAppearから、終了に時間がかかるコードを含めないでください。(少なくともメインスレッドで実行されているコード)。ビュー表示ごとに 1 回だけ実行する必要があるコードも同様です。

他にもあると思いますが、これらは覚えやすいので、お役に立てば幸いです。

于 2013-01-23T04:14:04.983 に答える
3

viewDidLoad: ビューの読み込みが完了したことを警告します

viewWillAppear: ビューが読み込まれる直前に実行されます

viewDidLoadあなたが一度しなければならないことです。viewWillAppearビューが表示されるたびに呼び出されます。テキストviewDidLoadの設定など、一度だけ行う必要があることを行う必要があります。UILabelただし、ユーザーがビューを表示するたびに、ビューの特定の部分を変更したい場合があります。たとえば 、iPod アプリケーションは、「再生中」ビューに移動するたびに歌詞をスクロールして一番上に戻します。

ただし、サーバーからロードする場合は、レイテンシーについても考慮する必要があります。すべてのネットワーク通信を viewDidLoad または viewWillAppear にパックすると、ユーザーがビューを表示する前にそれらが実行され、アプリが短時間フリーズする可能性があります。最初に、なんらかのアクティビティ インジケーターを備えた未入力のビューをユーザーに表示することをお勧めします。ネットワーキングが完了すると、1 ~ 2 秒かかる場合があります (または、失敗することもあります。誰にもわかりません)、ビューにデータを入力できます。これがどのように行われるかについての良い例は、さまざまな Twitter クライアントで見ることができます。たとえば、Twitterrific で著者の詳細ページを表示すると、ネットワーク クエリが完了するまで、ビューには "読み込み中..." としか表示されません。

于 2013-01-23T04:46:15.830 に答える