0

ログインを持つアプリケーションを作成しました。

Welcome View Controller で開始し、ユーザーがログインしていない場合はログインしているかどうかを確認し、Login View Controller を開きます。ユーザーがログインしている場合、またはログインしている場合、このようにユーザーを Home View Controller にプッシュします。

App Delegate (did finish launching)

self.welcomeViewController = [[APPWelcomeViewController alloc] init];
self.homeViewController = [[APPHomeViewController alloc] initWithNibName:@"APPHomeViewController" bundle:nil];

self.navController = [[UINavigationController alloc] initWithRootViewController:self.welcomeViewController];
self.navController.navigationBarHidden = YES;

self.window.rootViewController = self.navController;

ユーザーがログインすると、ホーム ビューがプッシュされます。

// Push the homeViewController onto the navController
[self.navController pushViewController:self.homeViewController animated:YES];

これは、この時点まですべて正常に機能します。次に、ログアウトするためのボタンを含む設定用のモーダル ビュー コントローラーを使用します。ユーザーのログアウトはこれを実行します:

// Log the user out
[User logOut];

// Then we need to remove the Settings Modal View Conrtoller
[self.presentingViewController dismissModalViewControllerAnimated:YES];

// Then we need to take user back to welcomeViewController
[self.navigationController pushViewController:welcomeViewController animated:YES];

期待どおりに設定ビュー コントローラーを閉じますが、ナビゲーション コントローラーはホーム ビューに残ります。エラーはありません。これが正しく機能しない理由を誰か知っていますか?

4

3 に答える 3

1

コードを再配置することで解決しました。代わりに、appdelegateで現在のユーザーを検索し、navコントローラーにホームビューのルートコントローラーをロードするか、メソッドを実行してウェルカムビューコントローラーをロードします。

次に、ウェルカムビューコントローラはユーザーもチェックします。現在のユーザーでない場合は、モーダルログインビューコントローラを表示します。

于 2012-10-02T20:03:30.103 に答える
0

ウェルカムビューコントローラを含むナビゲーションコントローラでウィンドウを初期化したら、ナビゲーションコントローラをプッシュする必要はありません。

このスタック内(ウェルカムビューコントローラー内)にビューを追加する場合は、メソッドself.navigation controller pushviewcontrollerを呼び出します...スタックから削除する場合は、popviewcontrollerを呼び出します。メインビュースタック(ルート)に移動します。 。

于 2012-10-01T14:08:45.303 に答える
0

これを試して:

// Take me back to the root navigation view controller (APPWelcomeViewController)
[self.navigationController popToRootViewControllerAnimated:YES];
于 2012-10-01T14:08:48.617 に答える