iPhone アプリケーションがあります。アプリを開くと、「LoginView」が表示されます。アプリケーションにログインすると、TabBarController が表示されます。3 番目の最後のタブには、[ログアウト] ボタンがあります。クリックすると、「LoginView」が再び表示されます。私の問題は、再度ログインすると「古い」タブバーが表示され、選択したタブが 1 つではなく 3 番目であり、「ログアウト」ボタンがあることです。また、別のユーザーでログインすると、前のユーザーの古いデータが表示されます(非常に危険です)。
コードは次のとおりです。 - Delegate.h:
UITabBarController *tabBarController;
LoginViewController *loginView;
- Delegate.m (didFinishLaunchingWithOptions):
[self.window makeKeyAndVisible];
loginView = [[LoginViewController alloc] init];
if (YES) { /* if the user is not already logged */
[self.window addSubview:loginView.view];
}
Delegate.m (メソッド):
- (void)loginComplete {
[loginView dismissModalViewControllerAnimated:YES];
[window addSubview:tabBarController.view];
}
- (void)logoutComplete {
[[tabBarController view] removeFromSuperview];
[tabBarController release];
[window addSubview:loginView.view];
}
そして、2 つの異なるビューコントローラーの 2 つのメソッドを次に示します。
- (IBAction)login:(id)sender {
TabNavisAppDelegate *delegate =
(TabNavisAppDelegate *) [[UIApplication sharedApplication] delegate];
[delegate loginComplete];
}
(ログアウト方法は同じです)
みんな、どうすればこのつらい問題を解決できますか? そこで、私がやりたいことを実行するアプリケーションのリストを次に示します。「Foursquare」、「Brightkite」などです。それぞれに、ログイン画面、タブバー ビュー、およびログアウト ボタンがあります。
みんな、ありがとう。