我的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);
}
但这对我不起作用。有什么建议吗?
答案 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];
}