我在一个充当登录页面的UiViewController中调用popToRootViewController。一旦后端验证了用户,就会调用该方法,现在允许用户访问其帐户。再次显示根视图控制器时,出现以下两个错误。
嵌套推送动画可能导致导航栏损坏
在意外状态下完成导航转换。导航栏子视图树可能已损坏。
以下是登录用户的代码。
- (IBAction)signIn:(id)sender
{
NSString *userName = [self.emailTextField.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
NSString *password = [self.passwordTextField.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
if (userName.length == 0 || password.length ==0){
UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:@"Invalid Login Credentials" message:@"Make sure you have entered a valid Username and Password" delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil];
[alertView show];
}else{
[PFUser logInWithUsernameInBackground:userName password:password block:^(PFUser *user, NSError *error) {
if (error){
UIAlertView *errorAlertView = [[UIAlertView alloc]initWithTitle:@"Something went wrong" message:[error.userInfo objectForKey:@"error"] delegate:nil cancelButtonTitle:@"ok" otherButtonTitles:nil];
[errorAlertView show];
}else{
//dispatch_sync(dispatch_get_main_queue(), ^{
[self.navigationController popViewControllerAnimated:YES];
//});
}
}];
}
}
rootViewController是应用程序启动的初始视图,并在那里检查是否有当前用户,如果没有,则将用户发送到登录页面。我注意到,进入Login页面后,导航栏顶部会出现一个后退箭头,返回rootViewController。一旦用户登录,现在在同一个地方有一个后退按钮,想要将用户带回已经弹出的LoginViewController。我认为这是问题发生的地方。
答案 0 :(得分:1)
当您尝试推送多个视图控制器或弹出多个视图控制器时,会引发此错误。您确定rootViewController的viewWillAppear
方法没有尝试推送视图控制器吗?如果是这样,您正在尝试推送视图控制器,同时弹出另一个视图控制器。希望这可以帮到你!