条件に基づいて初期ビューコントローラを設定するにはどうすればよいですか?

キラン

ユーザーがサーバーにログインしているかどうかに基づいて、異なるテンプレートが表示されます。ユーザーがアプリケーションサーバーにログインしていない場合はUIViewController、LoginViewController [ UITabBarViewController]を表示する必要がありますそれ以外の場合は、TabBarViewcontroller [ ]を表示します。

初めてストーリーボードを使っているので。ストーリーボード内でこのタイプの状態を処理するようにアドバイスできる人はいますか?

Cynichniyフラグ

私は次のようにそれをしました。

まず、LoginViewControllerと呼ばれるものを作成します。ログインロジックを実装します。ルートコントローラーはUITabBarControllerです。

現在AppDelegateにあります:

- (void) doLogin:(NSDictionary *)dict
{
        TransactionsViewController *transactions;
        BalancesViewController *balances;
        ProfileViewController *profile;
        UINavigationController *navi;
        UITabBarController *root;

        root = (UITabBarController *)self.window.rootViewController;

        navi = [root.viewControllers objectAtIndex:0];
        transactions = [navi.viewControllers objectAtIndex:0];
        transactions.delegate = self;

        navi = [root.viewControllers objectAtIndex:1];
        balances = [navi.viewControllers objectAtIndex:0];
        balances.delegate = self;

        navi = [root.viewControllers objectAtIndex:2];
        profile = [navi.viewControllers objectAtIndex:0];
        profile.delegate = self;

        [transactions loadDataFromLogin:dict];
        [balances loadDataFromLogin:dict];
        [profile loadDataFromLogin:dict];
}

- (void) showLoginView
{
        assert(loginController == nil);
        assert(activityView == nil);

        UITabBarController *tabbar = (UITabBarController *)self.window.rootViewController;
        loginController = [tabbar.storyboard instantiateViewControllerWithIdentifier:@"LoginViewController"];
        loginController.delegate = self;
        [tabbar presentModalViewController:loginController animated:YES];
}

- (void) loginWithLogin:(NSDictionary *)dict relogin:(BOOL)relogin
{
        NSString *_login = [dict valueForKey:@"email"];
        NSString *_pass = [dict valueForKey:@"pass"];
        NetworkOperation *op = [NetworkOperation operationLogin:_login pass:_pass];
        [NetworkOperation enqueueOperation:op observer:self];
        if (!relogin && !loginController)
                [self doLogin:dict];
}

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
        session = nil;
        loginController = nil;

        return YES;
}

- (void)applicationDidBecomeActive:(UIApplication *)application
{
        // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
        NSString *login = [[NSUserDefaults standardUserDefaults] stringForKey:@"email"];
        NSString *pass = [[NSUserDefaults standardUserDefaults] stringForKey:@"pass"];
        NSString *name = [[NSUserDefaults standardUserDefaults] stringForKey:@"name"];
        if ((login == nil || login.length == 0) ||
            (pass == nil || pass.length == 0) ||
            (name == nil || name.length == 0)) {
                if (!loginController) {
                        [self.window makeKeyAndVisible];
                        [self performSelector:@selector(showLoginView) withObject:nil afterDelay:0.1];
                }
        } else {
                NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:login, @"email",
                                      pass, @"pass", name, @"name", nil];
                [self loginWithLogin:dict relogin:(session != nil)];
        }
}

そのため、アプリデリゲートは、パスとログインが保存されているかどうかを確認します。はいの場合、それらを使用してログインし、ルートビューコントローラーに切り替えます。私の場合、残高や取引などのタブをいくつか表示するためにタブが付けられています。

ログインとパスがない場合は、ルートビューコントローラーのログインビューコントローラー表示します

ここで@sessionは現在のセッションです。コードに示されているように、ログインはキューに入れられた操作を使用しています。

詳細が必要な場合は、pingを送信してください。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

ビューコントローラの入力に基づいてビューに図形を描画するにはどうすればよいですか?

分類Dev

引数に基づいてグリマーコンポーネントの初期状態を設定するにはどうすればよいですか?

分類Dev

テキストビューのコンテンツサイズに基づいて、スクロールビューで有効または無効なスクロールを設定するにはどうすればよいですか?

分類Dev

年に基づいて条件付き書式を使用してExcelでカラーコードを設定するにはどうすればよいですか?

分類Dev

ストーリーボードのサブビューのコントローラーを設定するにはどうすればよいですか?

分類Dev

ルートに基づいて環境を設定するにはどうすればよいですか?

分類Dev

変数の出力に基づいてReactWebアプリでコンポーネントの幅を設定するにはどうすればよいですか?

分類Dev

LINQとEntityFrameworkを使用して、条件に基づいてパラメーターを設定するにはどうすればよいですか?

分類Dev

Railsのロケールに基づいてフォントを動的に設定するにはどうすればよいですか?

分類Dev

AppDelegateから初期ビューコントローラー(ストーリーボードで作成)にプロパティを設定するにはどうすればよいですか?

分類Dev

Pysparkのデータフレームの条件に基づいて新しいリスト値を設定するにはどうすればよいですか?

分類Dev

Androidデバイスに基づいて動的にビューの高さを設定するにはどうすればよいですか?

分類Dev

jsonデータに基づいてビューにカスタムクライアントコントロール/ウィジェットを動的にロードするにはどうすればよいですか?

分類Dev

ビューコントローラを閉じて、その親ビューコントローラに戻るにはどうすればよいですか?

分類Dev

ビューコントローラを閉じて、その親ビューコントローラに戻るにはどうすればよいですか?

分類Dev

リストビューの画像をダウンロードする条件を設定するにはどうすればよいですか?

分類Dev

ストーリーボードの初期ビューコントローラーを変更するにはどうすればよいですか?

分類Dev

コントローラに制約を設定するにはどうすればよいですか?

分類Dev

TableViewコントローラーを再設定するにはどうすればよいですか?

分類Dev

セル値に基づいてExcelvbaで条件を設定するにはどうすればよいですか?

分類Dev

兄弟コンポーネントによって設定されたURLに基づいてReactコンポーネントをリロードするにはどうすればよいですか?

分類Dev

データに基づいてdateRangeInputを設定するにはどうすればよいですか?

分類Dev

ナビゲーションドロワーフラグメントのlayout_gravityをrtlまたはltr言語に基づいて設定するにはどうすればよいですか?

分類Dev

非同期サービスからコントローラーの$ scopeにデータを設定するにはどうすればよいですか?

分類Dev

ビューがViewModelを介してコントローラーにIDを返すようにするにはどうすればよいですか?

分類Dev

Swiftの特定の条件でコードを使用して、あるビューコントローラーから別のビューコントローラーに移動するにはどうすればよいですか?

分類Dev

ビューコントローラの画面を分割するにはどうすればよいですか?

分類Dev

条件に基づいてデータ全体ではなく、cognosのパラメーターに基づいて表示されているレコードのみをカウントするにはどうすればよいですか?

分類Dev

プログラムですべてのビューに同じセッション変数を設定するにはどうすればよいですか?

Related 関連記事

  1. 1

    ビューコントローラの入力に基づいてビューに図形を描画するにはどうすればよいですか?

  2. 2

    引数に基づいてグリマーコンポーネントの初期状態を設定するにはどうすればよいですか?

  3. 3

    テキストビューのコンテンツサイズに基づいて、スクロールビューで有効または無効なスクロールを設定するにはどうすればよいですか?

  4. 4

    年に基づいて条件付き書式を使用してExcelでカラーコードを設定するにはどうすればよいですか?

  5. 5

    ストーリーボードのサブビューのコントローラーを設定するにはどうすればよいですか?

  6. 6

    ルートに基づいて環境を設定するにはどうすればよいですか?

  7. 7

    変数の出力に基づいてReactWebアプリでコンポーネントの幅を設定するにはどうすればよいですか?

  8. 8

    LINQとEntityFrameworkを使用して、条件に基づいてパラメーターを設定するにはどうすればよいですか?

  9. 9

    Railsのロケールに基づいてフォントを動的に設定するにはどうすればよいですか?

  10. 10

    AppDelegateから初期ビューコントローラー(ストーリーボードで作成)にプロパティを設定するにはどうすればよいですか?

  11. 11

    Pysparkのデータフレームの条件に基づいて新しいリスト値を設定するにはどうすればよいですか?

  12. 12

    Androidデバイスに基づいて動的にビューの高さを設定するにはどうすればよいですか?

  13. 13

    jsonデータに基づいてビューにカスタムクライアントコントロール/ウィジェットを動的にロードするにはどうすればよいですか?

  14. 14

    ビューコントローラを閉じて、その親ビューコントローラに戻るにはどうすればよいですか?

  15. 15

    ビューコントローラを閉じて、その親ビューコントローラに戻るにはどうすればよいですか?

  16. 16

    リストビューの画像をダウンロードする条件を設定するにはどうすればよいですか?

  17. 17

    ストーリーボードの初期ビューコントローラーを変更するにはどうすればよいですか?

  18. 18

    コントローラに制約を設定するにはどうすればよいですか?

  19. 19

    TableViewコントローラーを再設定するにはどうすればよいですか?

  20. 20

    セル値に基づいてExcelvbaで条件を設定するにはどうすればよいですか?

  21. 21

    兄弟コンポーネントによって設定されたURLに基づいてReactコンポーネントをリロードするにはどうすればよいですか?

  22. 22

    データに基づいてdateRangeInputを設定するにはどうすればよいですか?

  23. 23

    ナビゲーションドロワーフラグメントのlayout_gravityをrtlまたはltr言語に基づいて設定するにはどうすればよいですか?

  24. 24

    非同期サービスからコントローラーの$ scopeにデータを設定するにはどうすればよいですか?

  25. 25

    ビューがViewModelを介してコントローラーにIDを返すようにするにはどうすればよいですか?

  26. 26

    Swiftの特定の条件でコードを使用して、あるビューコントローラーから別のビューコントローラーに移動するにはどうすればよいですか?

  27. 27

    ビューコントローラの画面を分割するにはどうすればよいですか?

  28. 28

    条件に基づいてデータ全体ではなく、cognosのパラメーターに基づいて表示されているレコードのみをカウントするにはどうすればよいですか?

  29. 29

    プログラムですべてのビューに同じセッション変数を設定するにはどうすればよいですか?

ホットタグ

アーカイブ