0

您好,我有一个应用程序,其中控制器的以下层次结构:

  1. UITabBar控制器
  2. 带有 Table ViewController 的导航控制器
  3. UIView 控制器

情况如下。我想让所有的导航控制器都是纵向的,只有最后一个控制器应该是横向的。正确的横向左。

现在的问题是:当我推动新的控制器(最后一个)时,我希望方向是横向的。我已经覆盖了shouldAutorotate 和shouldAutorotateToInterfaceOrientation 方法。我还用掩码 LandscapeLeft 覆盖了方法supportedInterfaceOrientations?

我错过了什么吗?

我还在导航和标签栏控制器中实现了所有的旋转方法。在标签栏中:

-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    // You do not need this method if you are not supporting earlier iOS Versions
    return [self.selectedViewController shouldAutorotateToInterfaceOrientation:interfaceOrientation];
}

-(NSUInteger)supportedInterfaceOrientations
{
    return [self.selectedViewController supportedInterfaceOrientations];
}

-(BOOL)shouldAutorotate
{
    return YES;
}

在导航控制器中:

-(NSUInteger)supportedInterfaceOrientations
{
    return [self.topViewController supportedInterfaceOrientations];
}

-(BOOL)shouldAutorotate
{
    return YES;
}

任何帮助将不胜感激。

这些是最后一个控制器中实现的方法

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft);
}

-(BOOL)shouldAutorotate
{
    return YES;
}

-(NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskLandscapeLeft;
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
    return UIInterfaceOrientationLandscapeLeft;
}
4

1 回答 1

1

您可能还想覆盖另一种方法

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
    return UIInterfaceOrientationLandscapeLeft;
}

当视图控制器全屏显示时,系统会调用此方法。当您的视图控制器支持两个或多个方向但内容在其中一个方向中显示最佳时,您可以实现此方法。

于 2013-04-08T07:26:06.807 回答