インターネット接続を有効にする必要があることを最初にユーザーに警告するための適切なアプリケーションデザインパターンを決定する際に、いくつかの問題が発生しています。
ユーザーが要求できるデータの範囲が広いため、インターネット接続が必要なiOSアプリがあります。アプリにはいくつかのタブバーコントローラーがあり、その中には、階層と返されたデータに基づいてさまざまなビューをユーザーに案内するナビゲーションコントローラーがあります。すべてのリクエストは、中央のapiリクエストクラスがリクエストを完了するかエラーを報告するのを待つNSNotificationCenterオブザーバーを使用してASIHTTPRequestを使用して非同期的に行われます。ほとんどの場合、ユーザーは少なくとも最初のリクエストをダウンロードしますが、UIAlertViewで接続を有効にしてから、他のnavコントローラーレベルをスタックからポップすることで、それらをより低いレベルに戻すようにいつでも依頼できます。接続されています。全体的に、アプリケーションはうまく機能します。
ただし、ユーザーが接続を無効にして最初にアプリケーションを開くと、問題が発生します。多くの場合、最初のサブビュー(タブバー/ナビゲーション階層の作成を容易にするためのIBoutlet)は、接続の存在をテストする前にロードを試みます。これを行う正しい方法が、他のものが何らかの方法で読み込まれる前にアプリデリゲートにタイムアウトを作成することか、重要なデータを実際に取得しない最初のテストリクエストを作成することであるかどうかはわかりません(ほぼ不可能と思われるため) 、または少なくとも、デリゲートにならずにビューを最初から完全に再初期化することは非現実的です)。
アプリケーションの初期化段階でこれを実現するために使用する簡単な方法はありますか?残りの部分はとても単純なので、私は明らかな何かを見逃しているに違いないと感じています。
誰かが私にコードを投稿してほしいと思ったら、私はできますが、これは主にアーキテクチャの質問であると確信しています。また、アプリの意図的に緩く結合された性質のため、ほとんどの場合、委任するオブザーバーを使用したいことを覚えておいてください。
これについてのご意見をお待ちしております。