0

我正在做一个项目并面临一个问题。我的问题是我正在为 5.0 及更高版本制作一个项目,我的项目都是纵向视图,但只有一个视图同时具有视图(横向和纵向)我正在使用 NavigationController 自定义类并在自定义导航类中检查这样的方向`

    - (NSUInteger)supportedInterfaceOrientations
  {
int interfaceOrientation = 0;

if (self.viewControllers.count > 0)
{
    id viewController;
    for (viewController in self.viewControllers)
    {
       if ([viewController isKindOfClass:([CalenderViewController class])])
        {
            interfaceOrientation = UIInterfaceOrientationMaskAll;
        }
        else
        {
            interfaceOrientation = UIInterfaceOrientationMaskPortrait;
        }
    }
}
return interfaceOrientation;
}` 

CalenderViewController 是我的视图,它支持两种视图当我将视图弹出到 CalenderViewController 时,此代码对 popview 工作正常,这工作正常,但是当我在 CalenderViewController 上推送一个只有纵向视图的新视图控制器时,新的视图控制器保持在横向,而它应该是纵向模式。期待解决方案谢谢

4

1 回答 1

0

在这种情况下,您不应该返回NO. shouldAutorotate如果您这样做,甚至不会检查支持的方向,并且您的控制器将停留在上次使用的方向上。

相反,只需返回并YES在 中shouldAutorotate指定一个方向(纵向)supportedInterfaceOrientations,就像您已经做的那样。

重新YES打开shouldAutorotate不仅仅意味着您希望控制器自由旋转到其他方向。当您可能需要控制器在弹出或推送不同的视图后旋转回其唯一支持的方向时,也应该使用它。

于 2013-08-20T12:59:22.370 回答