2011-02-16 10 views
1

私は2つのビューコントローラ、ルート、および詳細を持っています。pushViewController: - デバイスがランドスケープモードの場合、ポートレートのみのモードで表示する方法は?

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { 
     return (interfaceOrientation == UIInterfaceOrientationPortrait 
     || interfaceOrientation == UIInterfaceOrientationLandscapeLeft 
     || interfaceOrientation == UIInterfaceOrientationLandscapeRight 
     || interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown); 
    } 

上記のコードは、ルートビューコントローラのために完璧に動作します:それは、次のコードを持っているので、ルートビューコントローラは、風景やポートレートの向きをサポートしています。

ルートビューコントローラが表示されていて、ユーザーがデバイスをランドスケープモードにすると、ビューはそれに応じて調整されます。この時点から、ディテール・ビュー・コントローラーをスタックにプッシュすると、横長モードでロードされます。しかし、私はポートレートモードのみをサポートするように設定しているので、そうしてはいけません。私は私の詳細ビューコントローラに以下のコードを使用しています:

2番目のビューコントローラで
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { 
    return (interfaceOrientation == UIInterfaceOrientationPortrait); 
} 

答えて

0

は、とあなたのコードを置き換え...同じコードを実行して終わるだけのマクロです

return UIInterfaceOrientationIsPortrait(interfaceOrientation); 
+0

私は既に持っています。しかし、ちょうど楽しみのために私はとにかくそれを試してみました...そして、私は同じ結果を受け取ります。私の2番目のビューは、縦長ではなく横長モードで読み込まれます... – bpatrick100

+0

はい、それはまたあなたのためにPortraitUpsideDownを処理します。 – robertvojta

+0

そして機能しない回転の理由は、shouldAutorotate ...が物理デバイスのローテーション時にのみ呼び出されるということです。この質問を確認する必要があります - http://stackoverflow.com/questions/2922919/transitioning-to-landscape-rotation-within-a-inavigationcontroller – robertvojta

関連する問題