的UITabBarController UINavigationController的中
问题描述:
我试图把一个一个的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];
答
然后加入navBarControllers到任何需要它们的标签。
答
用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]];
那工作不错!不需要模态或其他东西...
正如一个注:根据苹果的指导方针,你通常应该把导航控制器内的标签栏控制器,而不是其他的方式。 – mrueg 2011-12-16 23:05:14
同样的问题:/ – 2011-12-17 11:37:18