我有一个视图控制器说'HomeViewController',我在其上添加了UITabBarController
,其中有UITabBarItems
。现在我想要的是,当我选择HomeViewController时,应该首次选择没有选项卡,并且应该加载另一个视图。我已经尝试过UITabBar而不是UITabBarController,但它不起作用。我也尝试过:
tabBarController.selectedViewController=nil; //giving crash
tabBarController.selectedIndex=-1; //not working either
当用户点击它们时,应选择 UITabBarItems
。
答案 0 :(得分:0)
我认为这不是正确的方法,因为创建TabBar的概念说"显示相关选项卡的特定控制器"。如果你没有选择任何标签而不是你将在屏幕上显示的其他标签,"黑屏?"。所以请重新设计您的设计。
答案 1 :(得分:0)
您必须在HomeViewController上添加UITabBar对象。
在ViewDidLoad中,您必须添加以下代码:
ViewController1 *controller1 = [[ViewController1 alloc] initWithNibName:@"ViewController1" bundle:nil];
ViewController2 *controller2 = [[ViewController2 alloc] initWithNibName:@"ViewController2" bundle:nil];
viewControllersArray = [[NSArray alloc] initWithObjects:controller1,controller2, nil];
tabBarController = [[UITabBarController alloc] init];
tabBarController.viewControllers = [[NSArray alloc] initWithArray:viewControllersArray];
for(int i = 0; i < tabBarController.tabBar.items.count; i++){
[[tabBarController.tabBar.items objectAtIndex:i] setTitle:[[tabBar.items objectAtIndex:i] title]];
}
isItemSelected = NO;
还设置标签栏项目的标签从0开始。第一项为0,第二项为1,依此类推。
并实现委托方法:
(void)tabBar:(UITabBar *)tabBar1 didSelectItem:(UITabBarItem *)item {
if(!isItemSelected){
isItemSelected = YES;
AppDelegate *appDel = (AppDelegate *)[UIApplication sharedApplication].delegate;
appDel.window.rootViewController = tabBarController;
}
tabBarController.selectedIndex = item.tag;
tabBarController.selectedViewController = [viewControllersArray objectAtIndex:item.tag];
}