1

以下は典型的な使用例のようです: ログイン画面を表示する LoginViewController でアプリを起動します。ユーザーが正常にログインしたら、アプリのメイン ビューを表示します (これを MainViewController と呼びましょう)。

LoginViewController を UINavigationController に配置し、その後 MainViewController をプッシュする必要はありません。LoginViewController がスタックの一番下に存在し続ける理由がないためです。これは、二度と表示されないからです。また、アプリの後続の起動では、何らかのログイン トークンを既に取得しており、LoginViewController がまったく表示されないため、ナビゲーション コントローラーのスタックの起動ごとに矛盾が生じることがわかります。 .

また、同じ理由で、LoginViewController から MainViewController をモーダルに提示したくありません (モーダルの場合、LoginViewController が背後にロードされたままになります)。

また、ウィンドウの rootViewController を MainViewController (以前は LoginViewController に設定されていた場所) に設定したくない場合もあります。これは、遷移が許可されないためです。

上記のロジックに欠陥があるかどうか、実際にこれらのシナリオのいずれかが正しいかどうかについてフィードバックをお願いします。または、そうでない場合、このシナリオのために他の人は何をしていますか?

4

2 に答える 2

4

MainViewController をアプリのルート ビュー コントローラーにして、ログイン トークンがない場合は、起動時に LoginViewController をモーダルに提示してみませんか?

于 2013-02-06T21:53:04.043 に答える
2

私はこの種のアプリケーションを持っており、現在のオブジェクトである LoginViewController を削除し、このように HomeViewController がフォーカスされた TabBarController を追加することで実装しました。

  /* remove the  current Login screen and show the 2nd tab */ 
    NSMutableArray* newArray = [NSMutableArray arrayWithArray:self.tabBarController.viewControllers];
    [newArray removeObject:self];
    [self.tabBarController setViewControllers:newArray animated:YES];

アプリからログアウトするときは、ログイン画面を作成してスタックに追加します。それ以外の場合は、直接 HomeViewController に移動します

アプリからログアウトするときは、LoginViewController をスタックに戻し、UITabBarController の現在のインデックスを LoginViewController に次のように割り当てます。

 NSMutableArray *array =[NSMutableArray arrayWithObject:loginController];
        NSMutableArray* oldArray = [NSMutableArray arrayWithArray:self.tabBarController.viewControllers];
        [array addObjectsFromArray:oldArray];

        [self.tabBarController setViewControllers:array animated:YES];
        [self.tabBarController setSelectedIndex:0];

        self.tabBarController.tabBar.hidden=YES;
于 2013-02-06T21:52:48.487 に答える