[解決済み] UIViewController viewDidLoad vs. viewWillAppear。適切な役割分担とは?
質問事項
にどのような仕事を割り当てるべきか、いつも少し曖昧です。
viewDidLoad
vs.
viewWillAppear
: の中にあります。
UIViewController
のサブクラスを作成します。
例:あるアプリをやっていて、そのアプリに
UIViewController
サブクラスがサーバーにアクセスし、データを取得し、それをビューに送り、そしてそのビューを表示します。これを
viewDidLoad
vs.
viewWillAppear
?
解決方法は?
viewWillAppearはビューが表示されるたびに呼び出されます。UILabelのテキストを設定するように、viewDidLoadで一度だけ行う必要があることを行う必要があります。例えば、iPodアプリケーションでは、"Now Playing"ビューに行くたびに、歌詞を一番上にスクロールさせるなどです。
しかし、サーバーから物を読み込む場合は、レイテンシーも考えなければなりません。ネットワーク通信をviewDidLoadやviewWillAppearにすべて詰め込むと、ユーザーがビューを見る前に実行されてしまい、アプリが短時間フリーズしてしまう可能性があります。このため、最初に未入力のビューを表示して、何らかのアクティビティ・インジケータを表示するのがよいでしょう。ネットワーキングが完了したら、1秒か2秒かかるかもしれませんが(あるいは失敗するかもしれません)、ビューにデータを入力することができます。この方法は、様々なTwitterクライアントで見ることができます。例えば、Twitterrificで著者の詳細ページを表示すると、ネットワーククエリが完了するまで、ビューには「"Loading..."」と表示されるだけです。
関連
-
[解決済み】ウィンドウ階層にないビューを持つUIViewControllerでUIViewControllerを表示しようとする
-
[解決済み】 libc++abi.dylib: NSException 型のキャッチできない例外で終了する (lldb)
-
[解決済み】NSURLErrorDomainエラーコードの説明
-
[解決済み] UTF-8でエンコードされたNSDataをNSStringに変換します。
-
[解決済み] Xcodeで実行ファイルが無効なエンタイトルメントで署名されてしまう
-
[解決済み] WKWebviewにuseragentを設定する
-
[解決済み] 脱獄したiphoneで`uicache`コマンドは何をするのですか?[クローズド]
-
[解決済み] 配列型 'int [16]' は代入不可能です。
-
[解決済み】iOSのUIViewControllerのライフサイクルを理解するために
-
[解決済み】アプリがバックグラウンドから戻ってきたときに、viewWillAppearが呼ばれないのはなぜですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] EXC_CORPSE_NOTIFY シンボルのクラッシュが発生しました、追跡するには?
-
[解決済み] Int 型のインデックスを持つ [AnyObject]? の値を添え字として使用できません。
-
[解決済み] Xcodeのロギング。"Metal API Validation Enabled"
-
[解決済み] UICollectionView: 非Nilのレイアウトパラメータで初期化する必要があります。
-
[解決済み] SwiftUI vs Interface Builderとストーリーボード【非公開
-
[解決済み] iOS HTTP GET リクエストを実行できません -Error Domain=NSURLErrorDomain Code=-1012
-
[解決済み] Xcode 4のBundle creator OS Type code ?
-
[解決済み] iOS 9 : ユニバーサルアプリの警告「アプリがフルスクリーンを必要としない限り、すべてのインターフェイスの向きをサポートする必要があります」。
-
[解決済み] 配列型 'int [16]' は代入不可能です。
-
[解決済み] viewWillAppear:と-viewDidAppear:の違いは何ですか?