我有一个视图需要用户登录。当用户尝试打开该视图并且未登录时,我将调用登录视图让他登录,完成后我将调用他原本想要查看的视图。
在iPhone上,我通过推送视图控制器来实现这一点,但在iPad上,使用呈现视图控制器就无法实现。它会显示“正在解除”,无法显示新控制器。以下是代码:
- (void) buttonPressed
{
if (!userLoggedIn) { // userLoggedIn getter calls new screens of login if needed
return; // this is executed if user declined to login
}
MyViewController *temp = [[MyViewController alloc] init];
[self.navigationController presentViewController:temp animated:YES]; // this returns warning that dismissal in progress and does not work
}
我该怎么办?在iPhone上,我的所有逻辑都能正常工作,但在iPad上却失败了。我在许多地方都使用它,完全重写代码是不好的。
编辑:更多代码:
- (BOOL) userLoggedIn {
// code omitted
[centerController presentViewController:navController animated:YES completion:nil];
// code omitted
[centerController dismissViewController:navController animated:YES]; // setting to NO does not fix my problem
return YES;
}
编辑2: 这是iPad的代码。我已经删除了iPhone相关的代码。在iPhone上它所做的是使用推送而不是呈现控制器,在那种情况下一切正常。