0

TabBarController を使用するアプリで LoginViewController を「ModalViewController」として表示する場合のベスト プラクティス アプローチに関するフィードバックを探しています。

- アプリケーションは、ログイン/ログアウト機能を備えたユーザー セッションをサポートします - アプリが起動されると、自動的にログインを試み、TabBarController を直接表示するか、LoginViewController (ログイン時に閉じるアニメーションを有効にするために ModalViewController として表示されます) を表示します - アプリケーション多数のタブを持つ TabBarController があります。- ViewController が表示されるたびに、ユーザーの状態がチェックされます - ユーザーがログインしていない場合、ログイン機能を備えた ModalViewController を表示する必要があります - ユーザーが手動でログアウトした場合、同じ ModalViewController を表示する必要があります

私はこれを処理するためにいくつかの異なるデザインを考え出そうとしましたが、誰も完全に「正しい」とは感じません. アプリのデフォルト UIWindow を置き換えるサブクラス化された UIWindow を使用してこれを処理する 1 つのプロジェクトに取り組みました。次に、サブクラスは「UserLoggedInSuccessfully」、「UserLoggedOut」などのさまざまな通知をリッスンして、ModalViewController の表示を処理しました。

これに対する他の解決策はありますか?この種のソリューションに関する意見や経験をいただければ幸いです。

4

2 に答える 2

1

この問題にはさまざまな解決策があります。これらの代替案を試すことができますが、最初に推奨されるアプローチは次のとおりです。

  1. 毎回開くデフォルトHomeViewControllerの最初のタブを作成し、AppDelegateでログインセッションをチェックインし、セッションが有効でない場合はすべてのタブで表示することができます。含まれています。TabBarControllerLoginViewControllerdidFinishLaunchingWithOptionsLoginViewControllerModalViewControllerTabBarController

  2. 別の方法として、[タブ] にすべてのコントローラーを配置することもできますがLoginViewController、ユーザーがサインインした後に を提示する場合は、すべてのコントローラーを に追加しMutbaleArray、現在のオブジェクトである を削除しますLoginViewController。ユーザーがサインインしたら、情報をキーチェーンに保存します。これにより、ユーザーは何度もログインする必要がなくなります。このようにしてLoginViewController、ユーザーがログアウトしようとすると毎回表示されるのを避けることができます。次にLoginViewController、配列に追加してからのTabBarController後にすべてのオブジェクトを追加しますLoginViewController

于 2013-02-08T22:29:12.160 に答える
0

ユーザーがアプリを開いたときに、loginviewcontroller を rootviewcontroller として表示する必要があります。ログインに成功したら、tabbarviewcontroller を rootViewcontroller として作成する必要があります。次に、ユーザーがアプリを実行するたびに、有効なセッションがあるかどうかを確認する必要があります。タブバーでセッションが期限切れになった場合は、ルートとしてタバーを作成します。アプリのデリゲートからルート ビュー コントローラーを変更する必要があります。サインインする

于 2013-02-08T23:04:09.280 に答える