2011-12-16 76 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]]; 

那工作不错!不需要模态或其他东西...

相关问题