私はアップルのガイドラインを読みましたが、そうすべきではないと書かれていますが、私がしていることが悪い習慣であるかどうかを知りたいので、私に聞いてください。
アプリケーションが読み込まれると、アプリデリゲートで、タブの順序とその中のコンテンツを設定するWeb呼び出しが行われます。Web通話はこんな感じ
WebCalls *wc = [[WebCalls alloc] init];
[wc setWebCallDidFinish:^(NSString * json) {
// set up tab order here, as well as stores the JSON in a file on the phone
// Also code here to download images and cache them on phone
self.window.rootViewController = self.tabBarController;
[self.window makeKeyAndVisible];
}
[wc getData:phoneNumber];
このコードはうまく機能しますが、問題はアプリの起動時に何が起こるかです。
- 起動画像が1秒間表示されます(それほど長くはありませんが、0.5秒以下の場合もあるので面倒です)
- jsonが解析され、画像がダウンロードされている間、画面が約2秒間真っ暗になります。
- 次に、最初のタブコントローラーが表示されます
私が欲しいのは、スプラッシュ画面と最初の画面の間のシームレスな移行であり、ユーザーに黒い画面が表示されることはありません。
やろうと思っていたのはこんな感じ
与えられた答えでは、男はスプラッシュスクリーンになるようにビューを前方に押し出します。そのビューを前に進めてから、その画面でjsonデータを取得して画像をダウンロードするWeb呼び出しを実行し、ビューを閉じてタブコントローラービューをメインビューにするのは悪い習慣ですか?
または、他にどのようにこの遅延を防ぐことができますか?AppDelegateでこのような十分な大きさのWeb呼び出しを行うのは悪い習慣ですか?
これがバックグラウンドロードを実行しているときにビューを前方にプッシュするのが悪い習慣である場合、他に何をお勧めしますか?最初にtabControllerをメインのrootViewControllerにし、代わりに表示されている最初のタブでwebCallを実行し、このWeb呼び出しが終了したときにタブを更新するとよいでしょうか。これを検討していましたが、Web呼び出しが行われた後、タブの順序は任意の順序になる可能性があるため、最初にどのタブが表示されるかはわかりません。
あなたの入力に感謝します