0

私はアップルのガイドラインを読みましたが、そうすべきではないと書かれていますが、私がしていることが悪い習慣であるかどうかを知りたいので、私に聞いてください。

アプリケーションが読み込まれると、アプリデリゲートで、タブの順序とその中のコンテンツを設定する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. 起動画像が1秒間表示されます(それほど長くはありませんが、0.5秒以下の場合もあるので面倒です)
  2. jsonが解析され、画像がダウンロードされている間、画面が約2秒間真っ暗になります。
  3. 次に、最初のタブコントローラーが表示されます

私が欲しいのは、スプラッシュ画面と最初の画面の間のシームレスな移行であり、ユーザーに黒い画面が表示されることはありません。

やろうと思っていたのはこんな感じ

iPhoneのスプラッシュスクリーンタイムを変更する

与えられた答えでは、男はスプラッシュスクリーンになるようにビューを前方に押し出します。そのビューを前に進めてから、その画面でjsonデータを取得して画像をダウンロードするWeb呼び出しを実行し、ビューを閉じてタブコントローラービューをメインビューにするのは悪い習慣ですか?

または、他にどのようにこの遅延を防ぐことができますか?AppDelegateでこのような十分な大きさのWeb呼び出しを行うのは悪い習慣ですか?

これがバックグラウンドロードを実行しているときにビューを前方にプッシュするのが悪い習慣である場合、他に何をお勧めしますか?最初にtabControllerをメインのrootViewControllerにし、代わりに表示されている最初のタブでwebCallを実行し、このWeb呼び出しが終了したときにタブを更新するとよいでしょうか。これを検討していましたが、Web呼び出しが行われた後、タブの順序は任意の順序になる可能性があるため、最初にどのタブが表示されるかはわかりません。

あなたの入力に感謝します

4

1 に答える 1

2

与えられた答えでは、男はスプラッシュスクリーンになるようにビューを前方に押し出します。そのビューを前に進めてから、その画面でjsonデータを取得して画像をダウンロードするWeb呼び出しを実行し、ビューを閉じてタブコントローラービューをメインビューにするのは悪い習慣ですか?

これがそれを行う方法です。applicationDidFinishLaunchingからダウンロードするのは一般的に悪い習慣ですが、電話がインターネットに接続されていない場合はどうなりますか?

シンプルなビューコントローラーを提示します(presentModalViewController:controller animated:NOUIActivityIndi​​catorと何が起こっているかを説明するラベルを使用し、読み込みが完了したら閉じます(または失敗した場合は、エラーを表示してアプリへのアクセスを拒否します)。機内モードも確認することを忘れないでください。ユーザーに通知します。

于 2012-05-21T15:05:20.750 に答える