我有一个需要用户登录的视图。当用户尝试打开该视图但他尚未登录时,我将调用登录视图供他登录,完成后我将调用他想要的原始视图查看。
在 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 上的作用 - 它使用推送而不是呈现控制器,在这种情况下一切正常。
只要您的第一个观点尚未完全驳回,您就无法提出另一个观点。关闭视图的动画应该在呈现新视图之前完成。因此,您可以将其动画设置为NO
解雇或使用时performSelector:withObject:afterDelay:
并在 2-3 秒后呈现下一个视图。
希望这可以帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)