注销控制器崩溃,而不是允许用户注销

时间:2014-01-17 10:03:59

标签: ios objective-c controller logout

我的应用程序有一个自制的“注销控制器”,感谢您对问题的帮助。

我的“退出控制器”包含在我的应用程序中,可通过另一个控制器的简单侧滑动访问;但是,我已将“注销”按钮放在一个简单的UITableViewController中。

当我点击“注销”按钮时,我的问题就出现了,应用程序崩溃了,我不确定如何解析数据,以便用户在点击后成功注销按钮。如果有人能告诉我我哪里出错了会挽救生命!

- (IBAction)logOutAction:(id)sender {

    NSLog(@"yes");

    PDKeychainBindings *bindings = [PDKeychainBindings sharedKeychainBindings];
    [bindings setObject:@"no" forKey:@"loggedIn"];
    [bindings setObject:@"" forKey:@"userID"];

    UIWindow *window = [[UIApplication sharedApplication] keyWindow];
    UINavigationController *nav = (UINavigationController*)window.rootViewController;
    UIViewController *login = [nav.viewControllers  objectAtIndex:0];
    UINavigationController *slider = (UINavigationController*)login.presentedViewController;

    self.logOutButton.enabled = NO;
    [self.logOutButton setAlpha:0.8];

    [self performSelector:@selector(logOutAction:) withObject:nil afterDelay:0.1];
    [self setModalTransitionStyle:UIModalTransitionStyleCrossDissolve];
    [login dismissViewControllerAnimated:YES completion:^{ 

    }];
}


- (IBAction)close:(id)sender {

    //UIWindow *window = [[UIApplication sharedApplication] keyWindow];
    //DYNavigationController *nav = (DYNavigationController*)window.rootViewController;
    //UIViewController *login = [nav.viewControllerStack objectAtIndex:0];
    // CustomNavController *slider = (CustomNavController*)login.presentedViewController;
    //[self setModalTransitionStyle:UIModalTransitionStyleCrossDissolve];
    //[login dismissViewControllerAnimated:YES completion:^{    
    // }];

    [self dismissViewControllerAnimated:YES completion:nil];
}

1 个答案:

答案 0 :(得分:1)

您没有提供异常详细信息,但看起来您在取消分配后调用了实例。

logOutAction:方法中,您正在使用[self performSelector:@selector(logOutAction:) withObject:nil afterDelay:0.1];设置以后的通话。那你就是在解雇这个观点。因此,当logOutAction:秒内调用0.1时,实例不会存在,您将崩溃。

在此处使用performSelector是没有意义的 - 删除它。