我有一个需要用户登录的视图。当用户尝试打开该视图但他未登录时,我将调用登录视图让他登录,完成后我将调用他想要的原始视图查看。
在 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;
}
EDIT2:这是 iPad 的代码。我已经删除了与 iPhone 相关的代码。它在 iPhone 上的作用——它使用推送而不是呈现控制器,在这种情况下一切正常。