以下のコードは機能していますが、バグがあります。シナリオは、アプリシステムに入るためにログインすることから始めます。ログインが成功すると、アプリはUserDefaults(UserId)を設定します。その後、保存されたUserIdを使用してアプリビューをナビゲートできます。設定とタブログアウトに移動すると、UserIdがクリーンアップされ、ログインビューに移動します。
バグ:アプリに再度ログインし、ホームボタンをクリックしてiPhoneデスクトップに移動し、アプリを閉じてからもう一度開くと、UserIdが保存されたままになります。したがって、設定に移動してログアウトすると、UserIdがクリーンアップされ、ログインビューに移動しません。どうしてか分かりません。
コード:
- (IBAction)resetKeychain:(id)sender {
UIActionSheet *actionSheet = [[UIActionSheet alloc]
initWithTitle:@"Are you sure you want to logout?"
delegate:self
cancelButtonTitle:@"Cancel"
destructiveButtonTitle:@"Logout"
otherButtonTitles:nil];
actionSheet.actionSheetStyle = UIActionSheetStyleDefault;
[actionSheet showFromTabBar:self.tabBarController.tabBar];
[actionSheet release];
}
- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {
if (buttonIndex ==0) {
//logout
NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults];
//delete user ID fro user Defaults
[defaults setObject:nil forKey:@"UserId"];
//redirect to login view
NewClassMoonAppDelegate * appsDelegate =[[UIApplication sharedApplication] delegate];
[appsDelegate.window addSubview:[appsDelegate.login view]];
}
}