非同期リクエスト後にAppDelegateでRootViewControllerを選択します
-
21-12-2019 - |
質問
私は私の問題を説明しようとします。AppDelegateでは、非同期リクエストの結果に応じてRootViewControllerを選択する必要があります(AFNetworking Frameworkを使用しています)。実際、私のユーザーがプロファイリングされているかどうかを知る必要があります。
ストーリーボードでは、指定されたエントリポイントとしてホームビューを設定しますが、このビューは非同期要求が完了するまで常に表示されます。AppDelegateを応答を待つようにする方法はありますか?
解決
ネットワーク接続が悪くなると、アプリロード時間が非常に長くなり、OSがあなたのアプリを殺すことができるか、ユーザーがそれを殺す可能性があるため、アプリの代理人が応答を待つのに良い解決策はないと思います。P>
家庭の代わりにアプリケーションが何かを受け取ったとき、そしてあなたがユーザーへの適切なビューを受け取るとき(モーダルセーブがジョブを実行することができるように、アニメーション付きでユーザーが知っているように)ロードビューコントローラを追加することができます。 この助けを願っています
他のヒント
より良い解決策はスプラッシュスクリーンを使用することです。それがあなたのアプリがAppDelegateでロードされたとき、スプラッシュビューコントローラを作成してプッシュします。これは、アプリケーションのスプラッシュイメージを示す全画面全体を覆う単一のUIImageViewを含むでしょう。非同期通話完了時に、そのスプラッシュビューコントローラをPOPして、必要なビューコントローラを押します。
多くのアプリは、アプリを表示する前に必要な非同期データをダウンロードするためにこのように使用します。ユーザーに空の画面やゴミデータが表示されないように。
インターネット接続の失敗やサーバーの応答エラーなどのように何かが失敗した場合は、ユーザーにエラーを表示し、アプリロジックに従ってエラー処理を実行します。
ルートビューコントローラにプログラムで
としてナビゲートできます。[self.navigationController popToRootViewControllerAnimated:YES];
.
このコードは結果の状態になることができます。
またはあなたのやり方で、RootViewControllerへのナビゲーションのためのセグメが作成されていると思います。
を使ってセグューをプログラムで実行できます。- (void)performSegueWithIdentifier:(NSString *)identifier sender:(id)sender
. AFNETSWORKINGを使用している場合は、Successブロックにメソッドを追加し、辞書のパラメータでその方法に応答を渡します。メソッドで応答を確認し、そのメソッドからルートビューコントローラを作成したいコントローラを選択します。