0

我的根视图控制器处于纵向模式。我在这个根视图控制器上有一个按钮,按钮操作代码如下所示:

-(IBAction)VideosView
{
    VideosDetailViewController *videoview=[[VideosDetailViewController alloc] initWithNibName:@"VideosDetailViewController" bundle:[NSBundle mainBundle]];
    [self.navigationController pushViewController:videoview animated:YES];
    [videoview release];
}

我希望我的 VideosDetailViewController 处于横向模式。为了解决这个问题,我尝试了很多方法,但没有一个适合我。这是我到目前为止所尝试的:

- (NSUInteger)supportedInterfaceOrientations {
    return UIInterfaceOrientationMaskLandscapeLeft;
}

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

但这对我不起作用。有什么建议么?

4

2 回答 2

1

在 iOS6 中,只有根视图可以设置支持的界面方向,在这种情况下,您的根视图是导航控制器,因此您的 VideosDetailViewController 中的 supportedInterfaceOrientations 方法甚至不会被调用。

解决此问题的一种方法是使用以下方法在 UINavigationController 上创建一个类别。然后将查询您的 VideosDetailViewController 或导航控制器中的任何当前视图。

-(BOOL)shouldAutorotate {
    return [[self.viewControllers lastObject] shouldAutorotate];
}

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

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
    return [[self.viewControllers lastObject] preferredInterfaceOrientationForPresentation];
}
于 2013-01-04T16:20:30.860 回答
0

您可以使用此方法解决您的问题。它用于自动旋转功能。

-(NSUInteger) supportedInterfaceOrientations
{
   return [self.topViewController supportedInterfaceOrientations];
}
于 2013-01-04T19:22:38.500 回答