Кодът по-долу работи, но има грешка. Сценарият е, че започвам с влизане, за да вляза в системата на приложението. След като влизането е успешно, приложението ще зададе 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]];
}
}