带有未选中选项卡的UITabBarController

时间:2014-07-09 04:53:41

标签: ios uitabbarcontroller

我有一个视图控制器说'HomeViewController',我在其上添加了UITabBarController,其中有UITabBarItems。现在我想要的是,当我选择HomeViewController时,应该首次选择没有选项卡,并且应该加载另一个视图。我已经尝试过UITabBar而不是UITabBarController,但它不起作用。我也尝试过:

tabBarController.selectedViewController=nil; //giving crash
tabBarController.selectedIndex=-1;   //not working either
当用户点击它们时,应选择

UITabBarItems

2 个答案:

答案 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];
    

}