質問

私は私の問題を説明しようとします。AppDelegateでは、非同期リクエストの結果に応じてRootViewControllerを選択する必要があります(AFNetworking Frameworkを使用しています)。実際、私のユーザーがプロファイリングされているかどうかを知る必要があります。

ストーリーボードでは、指定されたエントリポイントとしてホームビューを設定しますが、このビューは非同期要求が完了するまで常に表示されます。AppDelegateを応答を待つようにする方法はありますか?

役に立ちましたか?

解決

ネットワーク接続が悪くなると、アプリロード時間が非常に長くなり、OSがあなたのアプリを殺すことができるか、ユーザーがそれを殺す可能性があるため、アプリの代理人が応答を待つのに良い解決策はないと思います。P>

家庭の代わりにアプリケーションが何かを受け取ったとき、そしてあなたがユーザーへの適切なビューを受け取るとき(モーダルセーブがジョブを実行することができるように、アニメーション付きでユーザーが知っているように)ロードビューコントローラを追加することができます。 この助けを願っています

他のヒント

より良い解決策はスプラッシュスクリーンを使用することです。それがあなたのアプリがAppDelegateでロードされたとき、スプラッシュビューコントローラを作成してプッシュします。これは、アプリケーションのスプラッシュイメージを示す全画面全体を覆う単一のUIImageViewを含むでしょう。非同期通話完了時に、そのスプラッシュビューコントローラをPOPして、必要なビューコントローラを押します。

多くのアプリは、アプリを表示する前に必要な非同期データをダウンロードするためにこのように使用します。ユーザーに空の画面やゴミデータが表示されないように。

インターネット接続の失敗やサーバーの応答エラーなどのように何かが失敗した場合は、ユーザーにエラーを表示し、アプリロジックに従ってエラー処理を実行します。

ルートビューコントローラにプログラムで

としてナビゲートできます。
[self.navigationController popToRootViewControllerAnimated:YES];
.

このコードは結果の状態になることができます。

またはあなたのやり方で、RootViewControllerへのナビゲーションのためのセグメが作成されていると思います。

を使ってセグューをプログラムで実行できます。
- (void)performSegueWithIdentifier:(NSString *)identifier sender:(id)sender
.

AFNETSWORKINGを使用している場合は、Successブロックにメソッドを追加し、辞書のパラメータでその方法に応答を渡します。メソッドで応答を確認し、そのメソッドからルートビューコントローラを作成したいコントローラを選択します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top