私は UITabBarController を持っており、各タブは必要に応じてスタックの新しいコントローラーをプッシュする異なる UIViewController を処理します。私が必要とするこれらのタブのうちの 2 つは、特定のコントローラーに到達したときに、iPhone を回転させ、横向きモードでビューを視覚化する機能です。多くの苦労の末、UITabBarController をサブクラス化して shouldAutorotateToInterfaceOrientation をオーバーライドすることが必須であることがわかりました。ただし、実装で単純に YES を返すと、次の望ましくない副作用が発生します。
iPhoneを回転させると、すべてのタブのすべてのコントローラーが自動的に横向きモードになります。
各コントローラーで shouldAutorotateToInterfaceOrientation をオーバーライドして NO を返すようにしても機能しません。iPhone を回転させると、コントローラーは横向きモードになります。
サブクラス化された UITabBarController で次のように shouldAutorotateToInterfaceOrientation を実装しました。
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
if([self selectedIndex] == 0 || [self selectedIndex] == 3)
return YES;
return NO;
}
私が興味を持っている 2 つのタブだけが実際に横向きモードをサポートするようにします。特定のタブのスタックにある特定のコントローラーでランドスケープ モードをサポートする方法はありますか?
私は成功せずに、次のようなことを試みました
(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
if([self selectedIndex] == 0 || [self selectedIndex] == 3)
{
if ([[self selectedViewController] isKindOfClass: [landscapeModeViewController class]])
return YES;
}
return NO;
}
また、デリゲート メソッド didSelectViewController を使用してみましたが、成功しませんでした。どんな助けでも大歓迎です。ありがとうございました。