在iOS6中查看控制器方向问题

时间:2013-01-04 16:04:01

标签: iphone uinavigationcontroller ios6 orientation

我的Root View Controller处于纵向模式。我在这个Root View Controller上有一个按钮,按钮动作代码显示在这里:

-(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);
 }

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

2 个答案:

答案 0 :(得分: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];
}

答案 1 :(得分:0)

您可以将此方法用于您的问题。它适用于自动旋转功能。

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