2011-12-16 89 views
0

我試圖把一個一個的UITabBarController UINavigationController的(編程)裏面,這是我的代碼:的UITabBarController UINavigationController的中

UITabBarController *tabBarController = [[UITabBarController alloc] init]; 
HomeViewPhone *home = [[HomeViewPhone alloc] initWithStyle:UITableViewStylePlain]; 
home.title = NSLocalizedString(@"HOME",nil); 
EventiPhone *eventi = [[EventiPhone alloc] initWithStyle:UITableViewStylePlain]; 
eventi.title = NSLocalizedString(@"EXPLORE", nil); 
FavoritiPhone *favoriti = [[FavoritiPhone alloc] initWithStyle:UITableViewStylePlain]; 
favoriti.title = NSLocalizedString(@"FAVORITES",nil); 
ProfiloPhone *profilo = [[ProfiloPhone alloc] initWithStyle:UITableViewStylePlain]; 
profilo.title = NSLocalizedString(@"PROFILE", nil); 
[tabBarController setViewControllers:[NSArray arrayWithObjects:home,eventi,favoriti,profilo, nil]]; 
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:tabBarController]; 
[self.window addSubview:navController.view]; 

,但是當我點擊一個TabBarItem的應用程序崩潰,此錯誤

-[__NSCFString _tabBarItemClicked:]: unrecognized selector sent to instance 0x7934db0 

有沒有想法?使用

self.window.rootViewController = tabBarController; 

而不是

[self.window addSubview:navController.view]; 

+0

正如一個注:根據蘋果的指導方針,你通常應該把導航控制器內的標籤欄控制器,而不是其他的方式。 – mrueg 2011-12-16 23:05:14

+0

同樣的問題:/ – 2011-12-17 11:37:18

回答

4

然後加入navBarControllers到任何需要它們的標籤。

0

用ARC:用@property解決!

更復雜的應用程序,我有:AppDelegate的 - > NavigationController - > TableViewController - > TabBarController

首先在AppDelegate中,建TableViewCtrl並在NavCtrl插入

TableViewController *myTVC = [[TableViewController alloc] initWithStyle:UITableViewStylePlain]; 
UINavigationController *myNC = [[UINavigationController alloc] initWithRootViewController:myTVC]; 
[self.window setRootViewController:myNC]; 

其次,在TableViewCtrl方法didSelectRow(爲我的使用),pushViewController到TabBarCtrl

_myTBC = [[TabBarController alloc] init]; 
[[self navigationController] pushViewController:_myTBC animated:YES]; 

最後,屬性的TabBarController在.h:這就是關鍵!

@property (retain, nonatomic) UITabBarController * TabBar; 

,並建立了.M,做自己......

ViewController1 *VC1 = [[ViewController1 alloc] init]; 
ViewController2 *VC2 = [[ViewController2 alloc] init]; 
_TabBar = [[UITabBarController alloc] init]; 
NSArray *table = [NSArray arrayWithObjects:VC1,VC2,nil]; 
[_TabBar setViewControllers:table animated:YES]; 
[[self view] addSubview:[_TabBar view]]; 

那工作不錯!不需要模態或其他東西...

相關問題