我在充当登录页面的UiViewController中调用popToRootViewController。后端对用户进行身份验证后,将调用该方法,该方法现在将允许用户访问其帐户。再次显示根视图Controller时,出现以下两个错误。
嵌套的推送动画可能会导致导航栏损坏
在意外状态下完成导航过渡。导航栏子视图树可能已损坏。
这是用于登录用户的代码。
- (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是应用程序启动时的初始视图,并在该视图中检查是否有当前用户,如果没有,则该用户将被发送到登录页面。我确实注意到,通过进入“登录”页面,导航栏顶部有一个向后箭头,可以返回到rootViewController。一旦用户登录,现在在同一位置会有一个后退按钮,该按钮想将用户带回已弹出的LoginViewController。我认为这就是问题所在。
当您尝试推送多个视图控制器或弹出多个视图控制器时,会引发此错误。您确定viewWillAppear
rootViewController的方法没有尝试推送视图控制器吗?如果是这样,则您尝试在弹出另一个视图控制器时推入视图控制器。希望对您有所帮助!
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句