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 メソッドは呼び出されません。

これを回避する 1 つの方法は、次のメソッドを使用して 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 に答える