美文网首页
iOS学习笔记:UITabBarController

iOS学习笔记:UITabBarController

作者: 木登与木由 | 来源:发表于2017-10-09 11:14 被阅读32次

    UITabBarController在项目中用的不太频繁,但确实很多项目中必不可少的一个重要部分,今天来自己整理一下相关使用方法

    • 在新建工程时发现有一个Tabbed Application选项,创建后的界面是这个样子的,感兴趣的童鞋可以自己研究一下
      Tabbed Application
    • 言归正传,我们还是使用比较常用的Single ViewApplication来创建

    1、UITabBarController的基础设置

    • 首先创建一个tabBarController继承自UITabBarController,然后创建三个viewController并添加下面的方法
    - (void)setUpAllChildViewController{
        
        // 创建子试图控制器
        FirstViewController *firstVC = [[FirstViewController alloc] init];
        [self addChildVC:firstVC title:@"第一页" image:@"tabbar_first" selectedImage:@"tabbar_first_selected"];
        
        secondViewController *secondVC = [[secondViewController alloc] init];
        [self addChildVC:secondVC title:@"第二页" image:@"tabbar_second" selectedImage:@"tabbar_second_selected"];
        
        thirdViewController *thirdVC = [[thirdViewController alloc] init];
        [self addChildVC:thirdVC title:@"第三页" image:@"tabbar_mine" selectedImage:@"tabbar_mine_selected"];
        
    }
    
    /**
     *  添加一个子视图控制器
     *
     *  @param childVC       自控制器
     *  @param title         标题
     *  @param image         图片
     *  @param selectedImage 选中图片
     */
    - (void)addChildVC:(UIViewController *)childVC
                 title:(NSString *)title
                 image:(NSString *)image
         selectedImage:(NSString *)selectedImage{
        
        childVC.title = title;
        //设置图片及其渲染模式
        childVC.tabBarItem.image = [[UIImage imageNamed:image] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
        childVC.tabBarItem.selectedImage = [[UIImage imageNamed:selectedImage]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
        
        // 设置选中状态下文字样式
        NSMutableDictionary *textAttrs = [NSMutableDictionary dictionary];
        textAttrs[NSForegroundColorAttributeName] = [UIColor orangeColor];
        textAttrs[NSFontAttributeName] = [UIFont systemFontOfSize:13];
        [[UITabBarItem appearance] setTitleTextAttributes:textAttrs forState:UIControlStateSelected];
        
        // 设置普通状态下文字样式
        NSMutableDictionary *selectTextAttrs = [NSMutableDictionary dictionary];
        
        selectTextAttrs[NSFontAttributeName] = [UIFont systemFontOfSize:13];
        
        [[UITabBarItem appearance] setTitleTextAttributes:selectTextAttrs forState:UIControlStateNormal];
        
        //给每一个子视图控制器都加一个导航控制器
        UINavigationController *nvc = [[UINavigationController alloc]initWithRootViewController:childVC];
        // 添加为子视图控制器
        [self addChildViewController:nvc];
        
        
        [UITableViewCell appearance].selectionStyle = UITableViewCellSelectionStyleNone;
        
    }
    
    //禁用tabbar双击
    -(BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController
    {
        UIViewController * vcSelected = tabBarController.selectedViewController;
        
        if ([vcSelected isEqual:viewController]) {
            
            return NO;
            
        }
        return YES;
    }
    
    
    • 然后在viewDidLoad中调用setUpAllChildViewController方法
    • 最后,在AppDelegate中创建该类并设置为rootViewController就可以正常运行了
    HHTabBarController *tb = [[HHTabBarController alloc]init];
    self.window.rootViewController = tb;
    [self.window makeKeyAndVisible];
    

    2、其他应用唤醒APP时回到首页

    //回到首页
    [self.tabbar.childViewControllers[i] popToRootViewControllerAnimated:NO];
    self.tabbar.selectedIndex = 0
    
    //首页控制器
    UINavigaitonController *nav=(UINavigaitonController *)self.tabbar.viewControllers[0];
    UIViewController *vc=(UIViewController*)nav.viewControllers.lastObject;
    

    3、如果不想要tabbar是半透明

    self.tabBarController.tabBar.translucent = NO;
    

    最后,附上一篇自定义tabBarItem的文章。

    相关文章

      网友评论

          本文标题:iOS学习笔记:UITabBarController

          本文链接:https://www.haomeiwen.com/subject/jyhmextx.html