UITabBarControllerでインターフェイスを回転する

私は新しい「Xcode 4.2」を使って新しい「Tab Barプロジェクト」を作成しました。 UITabBarで動作する「新しい」方法は異なります.Xcodeは(UITabBarControllerを使って)xibファイルを作成するのではなく、コードですべてを行います。 さて、それをやりましょう。

したがって、 didFinishLaunchingWithOptions のコードは次のとおりです。

UIViewController *viewController1, *viewController2, *viewController3;
UINavigationController *nav1, *nav2, *nav3;

if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {

    viewController1 = [[gemboy_iphone alloc] initWithNibName:@"vc1" bundle:nil];
    viewController2 = [[concerti_iphone alloc] initWithNibName:@"vc2" bundle:nil];
    viewController3 = [[discografia_iphone alloc] initWithNibName:@"vc3" bundle:nil];

    nav1 = [[UINavigationController alloc] initWithRootViewController:viewController1];
    nav2 = [[UINavigationController alloc] initWithRootViewController:viewController2];
    nav3 = [[UINavigationController alloc] initWithRootViewController:viewController3];

}
else {
  //same thing for the iPad version
}
self.tabBarController = [[UITabBarController alloc] init];
self.tabBarController.viewControllers = [NSArray arrayWithObjects:nav1, nav2, nav3, nil];
self.window.rootViewController = self.tabBarController;
[self.window addSubview:self.splash.view];
[self.window makeKeyAndVisible];
return YES;

そして、それは動作します。

私の3つの.mファイルvc1.m、vc2.mとvc3.m(そして私のiPadのUIViewController)もこのメソッドを持っています

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
     return YES;
}

問題は、iPhoneを回転させると、TabBarControllerではなくステータスバーだけが回転することです。

なぜなのかご存知ですか? ありがとう

1
3つのView Controllerクラスがgemboy_iphone、concerti_iphone、およびdiscografia_iphoneと呼ばれることは珍しいことですが、vc1.m、vc2.m、およびvc3.mファイルにあります。それが正しいと思いますか?名前がペン先名に似ているだけなので、XCodeはそれらのファイルを見つけられません。実際にそれらのクラスが含まれていれば、それらのクラスにファイルの所有者タイプを設定します。
追加された 著者 morningstar,

1 答え

あなたは絶対にUITabBarControllerをサブクラス化する必要はありません。

タブバーコントローラーは、すべてのビューコントローラーがshouldAutorotateToInterfaceOrientationを実装している場合に、自動的に回転し、同じ向きに対してYESを返します。

タブ付きアプリケーションテンプレートを使用してXcode 4.2で新規プロジェクトを作成すると、自動的に回転することがわかります。

2
追加された