iOS - 支持特定ViewControllers的旋转

时间:2013-09-20 17:01:18

标签: ios uiview uiviewcontroller uinavigationcontroller orientation

我有3个视图的层次结构

我为NavigationViewController创建了一个子类,并设置了一个属性Landscape,它确定每个viewController是否可以支持不同的方向。

此属性在每个View控制器的ViewWillAppear中设置:这非常有效。控制器1和2仅为纵向,控制器3支持纵向和横向。

当我回到popping控制器3回到控制器2时,问题就出现了 如果我在横向控制器3中,我单击后退按钮,我的控制器2将以横向方式呈现给我:(控制器2不支持横向)

然后我必须旋转设备以确定方向以自行修复。 。 。 。

导航控制器中的

代码      - (BOOL)应该是Autorotate     {        返回YES;     }

- (NSUInteger)supportedInterfaceOrientations
{
   if (LandscapeOK) {
       // for iPhone, you could also return UIInterfaceOrientationMaskAllButUpsideDown
       return UIInterfaceOrientationMaskAll;
   } else {
    return UIInterfaceOrientationMaskPortrait;
}

每个ViewControllers的代码ViewWillAppear方法

[(NavigationViewController *)[self navigationController] setLandscape:YES];

我的代码设置与此问题几乎完全相同:同样的问题也是如此。问题是在一年左右的时间内发布的,但尚未找到合适的解决方案 - 同时列出了所列的答案

iOS 6: How do I restrict some views to portrait and allow others to rotate?

1 个答案:

答案 0 :(得分:0)

鉴于 1.你对我的评论的回复, 2.您已尝试过以下建议的解决方案:

iOS 6: How do I restrict some views to portrait and allow others to rotate?

我认为,您可以在所有控制器上访问相同/共同的属性LandscapeOK。

当您从Controller 3导航回控制器2时,我建议您在supportedInterfaceOrientations中调试和检查LandscapeOK的值。