jam*_*mie 7 objective-c ipad modalviewcontroller ios
我最近在将一些代码从iPhone应用程序移植到iPad时遇到了问题.它可能与此处描述的问题有关,但我发现该问题的解释/解决方案并不令人满意.场景是这样的:
视图控制器'A'(根视图控制器)使用"表单"模式演示样式呈现模态视图控制器(称为'B').
视图控制器B呈现具有"全屏"模态呈现样式的视图控制器"C".
当视图控制器C是最顶部呈现的视图控制器时,iPad旋转.
取消C后,B将重新显示,但方向不正确.
据我所知,链接多个呈现的视图控制器应该没有问题 - 实际上,在其他视图控制器文档中呈现视图控制器中明确支持此行为.我还在iOS 5发行说明中阅读了以下声明:
iOS 5中的旋转回调不适用于通过全屏显示的视图控制器.这意味着,如果你的代码呈现了另一个视图控制器视图控制器,然后用户随后旋转设备,以不同的取向,在解雇,底层控制器(即呈现控制器)将不会收到任何旋转回调.但请注意,呈现控制器在重新显示时将接收viewWillLayoutSubviews调用,并且可以从此方法查询interfaceOrientation属性并用于正确布局控制器.
据我所知,这不会发生 - 视图控制器B接收到对-shouldAutoRotateToInterfaceOrientation的调用,但此调用中的interfaceOrientation参数的值是视图控制器B在呈现视图控制器C时的接口方向的值,而不是值解雇后C的界面取向 由于我们在iPad上,所有这些视图控制器都在-shouldAutoRotateToInterfaceOrientation中返回YES.因此B视图的界限永远不会改变,所以-willLayoutSubviews永远不会被调用.
我已经尝试在B解除它之前将视图控制器C的方向保存在回调中,然后在下次使用该信息时调用theAouldAutoRotateToInterfaceOrientation,并且仅在C被解除时返回Y的方向.这修复了,在没有进行此检查的情况下出现的损坏的UI,但是视图控制器B没有将其界面方向更新为此值,因此后续的模态演示将从设备的错误侧进行动画制作.
有没有人能够成功获得这样的视图控制器配置?它似乎并不像一个场景那么不寻常,所以我有点惊讶它没有像我最初预期的那样工作.
提前致谢.