我有一个将模态视图控制器用于各种目的的应用程序。对于这个问题,最重要的是,我们使用模态控制器在用户注销时显示登录屏幕。
我遇到的问题是,如果在调用时另一个模态控制器在屏幕上或屏幕外进行动画处理,则 presentModalViewController:animated: 似乎会静默失败。它将打印到调试控制台并显示警告,但该方法本身不会返回 BOOL 或抛出异常,因此我似乎无法检查代码是否失败,因此我可以在一秒钟内重试。
有没有什么方法可以检测到调用这个方法后控制器没有立即显示?
我有一个将模态视图控制器用于各种目的的应用程序。对于这个问题,最重要的是,我们使用模态控制器在用户注销时显示登录屏幕。
我遇到的问题是,如果在调用时另一个模态控制器在屏幕上或屏幕外进行动画处理,则 presentModalViewController:animated: 似乎会静默失败。它将打印到调试控制台并显示警告,但该方法本身不会返回 BOOL 或抛出异常,因此我似乎无法检查代码是否失败,因此我可以在一秒钟内重试。
有没有什么方法可以检测到调用这个方法后控制器没有立即显示?
所以当我输入这个问题时,我意识到我可以检查presentingViewController(或parentViewController)来查看它是否显示,如果没有,再试一次。
经过测试,它可以工作。想我会发布并回答这个问题,让其他人发现可能会遇到类似的问题。
我在测试中注意到的其他一些事情:
看起来如果模态视图没有显示动画,即使您拨打电话时另一个模态视图正在动画,它也会成功。
在您正在显示的控制器上调用dismissModalViewControllerAnimated:NO,在向模态控制器呈现动画之前,即使另一个控制器正在制作动画,它也将允许它成功完成。