0

私は現在 iOS アプリを構築しており、必要な画面を表示するための最良の方法を見つけようとしています。

アプリはタブベースのアプリですが、タブバーとその子は、ユーザーがサインインするまで表示されません。

現在、アプリ デリゲートは、呼び出されたときに tabbarcontroller をルート ビュー コントローラーとして設定し、必要にapplication:didFinishLaunchingWithOptions応じてタブ バー コントローラーの最初のコントローラーがサインイン ビュー コントローラーを提示します。

このアプローチの問題点は、タブ バーの最初のビュー コントローラーが非常にビジーであることです。外部 API に対していくつかのリクエストを行いますが、その中には最初に有効なセッション トークンが必要なものもあります。

誰かがより良い解決策を提案できない限り、私がやりたいことはapplication:didFinishLaunchingWithOptions、有効なセッション ID があるかどうかを確認することです。ある場合は、tabBarController を rootViewController として設定し、ない場合は、サインイン コントローラーをルート ビュー コントローラーとして設定します。

誰かがこのアイデアの落とし穴を見ることができますか?

4

2 に答える 2

1

NSUserDefault を使用して bool 値を保存します。これは初めて true になり、bool 値を false にするとともにログイン画面が表示されます。したがって、2回目のログイン画面は表示されません

これを application:didFinishLaunchingWithOptions メソッドに追加します。

 [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"FirstTime"];
 [[NSUserDefaults standardUserDefaults] synchronize];

 if([[NSUserDefaults standardUserDefaults] boolForKey:@"FirstTime"] == YES)
 {
    [[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"FirstTime"];
    [[NSUserDefaults standardUserDefaults] synchronize];
   //login screen
 } 
于 2012-09-05T12:05:48.540 に答える
0

私はアプリで両方のアプローチを使用しましたが、View Controllerの階層を変更する必要がないため、最初に説明したアプローチが最適です。実際には、NSUserDefaultsにブール値を格納し、最初のViewControllerに別のブール値を格納する必要があります。タブバーの最初のビューコントローラーのviewDidLoadメソッドでuserDefaultbool値をチェックして、ユーザーが認証されているかどうかを確認します。認証されていない場合は、最初のビューコントローラーのbool値を適切な値に設定し、サードパーティのAPIを介して実行する必要のあるアクションを実行しないでください。 、認証し、boolを適切な値に設定して、サードパーティのAPIに戻ります。

于 2012-09-05T12:13:06.993 に答える