我的应用程序有一个自制的“注销控制器”,感谢您对问题的帮助。
我的“退出控制器”包含在我的应用程序中,可通过另一个控制器的简单侧滑动访问;但是,我已将“注销”按钮放在一个简单的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];
}
答案 0 :(得分:1)
您没有提供异常详细信息,但看起来您在取消分配后调用了实例。
在logOutAction:
方法中,您正在使用[self performSelector:@selector(logOutAction:) withObject:nil afterDelay:0.1];
设置以后的通话。那你就是在解雇这个观点。因此,当logOutAction:
秒内调用0.1
时,实例不会存在,您将崩溃。
在此处使用performSelector
是没有意义的 - 删除它。