リソース(xibを含む)には、ロードされるデバイスタイプを指定する命名規則があります。ただし、これらは特定の方向には存在しません。-landscape
余分なことは何もしません(より具体的には、おそらくiPhoneにもリソースがロードされますが、これはあなたが望むものではありません)。
http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/LoadingResources/Introduction/Introduction.html#//apple_ref/doc/uid/10000051i-CH1-SW2
向きの変更の処理については、iOS5以下のメソッドとそれらを処理するためのiOS6メソッドの両方を実装していることを確認してください。
// Older versions of iOS (deprecated)
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation {
return UIInterfaceOrientationIsLandscape(toInterfaceOrientation);
}
// iOS6
- (BOOL)shouldAutorotate {
return YES;
}
// iOS6
- (NSUInteger)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskLandscape;
}
// Added after comment
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
return UIInterfaceOrientationLandscapeLeft;
}
これは、viewControllerがランドスケープにのみロードされるようにする公式の方法です。
編集:
preferredInterfaceOrientationForPresentation
メソッドも追加しました。個人的にはこのメソッドは好きではありませんが、次の向きが変わるまで、viewControllerをその向きで表示するように強制します。良くありませんが、オリエンテーションメソッドが呼び出されるかどうかを確認するのに役立ちます。
また、これらの各メソッドにブレークポイントを設定してみてください。まったく呼び出されない場合は、サブクラス化に問題がある可能性があります。ストーリーボードのviewControllerがスーパークラスではなくサブクラスに設定されていることを確認してください。
Edit2:
InterfaceBuilderでこれを確認してください: