七、UITabBarController

224 阅读1分钟
/**
 *  初始化所有的子控制器
 */
- (void)setupAllChildViewControllers
{
    
    UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]];
    GFBHomeVC *firstViewController = [sb instantiateViewControllerWithIdentifier:@"GFBHomeVC"];
    [self setupChildViewController:firstViewController title:@"首页" tabBarTitle:@"首页" imageName:@"icon_home_normal" selectedImageName:@"icon_home_selected"];
    
    GFBTypesVC *secondViewController = [sb instantiateViewControllerWithIdentifier:@"GFBTypesVC"];
    [self setupChildViewController:secondViewController title:@"分类" tabBarTitle:@"分类" imageName:@"iocn_classification_normal" selectedImageName:@"iocn_classification_selected"];
    
    GoodsListVC *thirdViewController = [[GoodsListVC alloc] init];
    [self setupChildViewController:thirdViewController title:@"购物车" tabBarTitle:@"购物车" imageName:@"icon_shopping-cart_normal" selectedImageName:@"icon_shopping-cart_selected"];
    
    GFBMineVC *fourthViewController = [sb instantiateViewControllerWithIdentifier:@"GFBMineVC"];
    [self setupChildViewController:fourthViewController title:@"个人中心" tabBarTitle:@"个人中心" imageName:@"icon_personal-center_normal" selectedImageName:@"icon_personal-center_selected"];
}

/**
 *  初始化一个子控制器
 *
 *  @param childVc           需要初始化的子控制器
 *  @param title             标题
 *  @param imageName         图标
 *  @param selectedImageName 选中的图标
 */
- (void)setupChildViewController:(UIViewController *)childVc title:(NSString *)title tabBarTitle:(NSString *)tabBarTitle imageName:(NSString *)imageName selectedImageName:(NSString *)selectedImageName
{
    // 1.设置控制器的属性
    childVc.navigationItem.title = title;
    // 设置图标
    childVc.tabBarItem.image = [UIImage imageNamed:imageName];
    childVc.tabBarItem.title = tabBarTitle;
    
    // 设置选中的图标
    UIImage *selectedImage = [UIImage imageNamed:selectedImageName];
    
    childVc.tabBarItem.selectedImage = [selectedImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
    
    UIImage *normalImage = [UIImage imageNamed:imageName];
    childVc.tabBarItem.image = [normalImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
    
    
    UINavigationController *nav;
    if([childVc isKindOfClass:[GFBMineVC class]]) {
        nav = [[KLTNavigationController alloc]initWithRootViewController:childVc];
    }else {
        // 2.包装一个导航控制器
        nav = [[GFBBaseNaVC alloc] initWithRootViewController:childVc];
    }
    [self addChildViewController:nav];
    
}