2011-10-27 73 views
1

我用新的Xcode 4.2創建了一個新的「標籤欄項目」。 使用UITabBar的「新」方式不同:Xcode不會創建xib文件(使用UITabBarController),但它通過代碼完成所有工作。好的,讓我們來做吧。使用UITabBarController旋轉接口

所以我在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; 

和它的作品。

我的三個.m文件vc1.m,vc2.m和vc3.m(也是我的iPad UIViewControllers)有這個方法

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

的問題是,當我旋轉iPhone,它只是旋轉狀態欄,而不是TabBarController!

你知道爲什麼嗎? 謝謝

+0

你的三個視圖控制器類稱爲gemboy_iphone,concerti_iphone和discografia_iphone,但它們駐留在文件vc1.m,vc2.m和vc3.m中是很常見的。你確定這是正確的嗎? XCode不會因爲它們的名稱與nib名稱相似而找不到這些文件。如果他們確實包含這些類,並且您已將文件的所有者類型設置爲這些類的nib中的類型,則會發生這種情況。 – morningstar

回答

2

你絕對不必子類UITabBarController,也不應該。

如果所有視圖控制器都實現了shouldAutorotateToInterfaceOrientation,並且對於相同的方向返回YES,則標籤欄控制器將自動旋轉。

如果您使用選項卡式應用程序模板在Xcode 4.2中創建新項目,您將看到它自動旋轉。