0

我有 3 个视图的层次结构

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

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

当我返回popping控制器 3 以返回控制器 2 时,问题出现了,如果我在控制器 3 中处于横向,并且我单击后退按钮,我的控制器 2 以横向显示给我:(控制器 2 确实不支持横向)

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

导航控制器中的代码 - (BOOL)shouldAutorotate { return YES; }

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

每个 ViewControllersViewWillAppear方法的代码

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

我的代码设置几乎与这个问题完全相同:同样的问题。问题已在大约一年前发布,但还没有合适的解决方案 - 在查看列出的答案时

iOS 6:如何将某些视图限制为纵向并允许其他视图旋转?

4

1 回答 1

0

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

iOS 6:如何将某些视图限制为纵向并允许其他视图旋转?

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

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

于 2013-09-20T19:55:32.727 回答