1. ホーム
  2. ios

[解決済み] UIViewController viewDidLoad vs. viewWillAppear。適切な役割分担とは?

2022-02-07 02:55:51

質問事項

にどのような仕事を割り当てるべきか、いつも少し曖昧です。 viewDidLoad vs. viewWillAppear : の中にあります。 UIViewController のサブクラスを作成します。

例:あるアプリをやっていて、そのアプリに UIViewController サブクラスがサーバーにアクセスし、データを取得し、それをビューに送り、そしてそのビューを表示します。これを viewDidLoad vs. viewWillAppear ?

解決方法は?

viewWillAppearはビューが表示されるたびに呼び出されます。UILabelのテキストを設定するように、viewDidLoadで一度だけ行う必要があることを行う必要があります。例えば、iPodアプリケーションでは、"Now Playing"ビューに行くたびに、歌詞を一番上にスクロールさせるなどです。

しかし、サーバーから物を読み込む場合は、レイテンシーも考えなければなりません。ネットワーク通信をviewDidLoadやviewWillAppearにすべて詰め込むと、ユーザーがビューを見る前に実行されてしまい、アプリが短時間フリーズしてしまう可能性があります。このため、最初に未入力のビューを表示して、何らかのアクティビティ・インジケータを表示するのがよいでしょう。ネットワーキングが完了したら、1秒か2秒かかるかもしれませんが(あるいは失敗するかもしれません)、ビューにデータを入力することができます。この方法は、様々なTwitterクライアントで見ることができます。例えば、Twitterrificで著者の詳細ページを表示すると、ネットワーククエリが完了するまで、ビューには「"Loading..."」と表示されるだけです。