美文网首页码农的世界
iOS UITabBarController详解

iOS UITabBarController详解

作者: 齐舞647 | 来源:发表于2017-12-17 16:39 被阅读39次

    UITabBarController跟UINavigationController类似,
    UITabBarController也可以轻松地管理多个控制器。

    UITabBarController 标签控制器:

    一、View的结构:

    UITabBarController它是一个控制器,所以它也有自己的View.
    它view内部的结构为一个专门存放子控制器View的View,和一个UITabBar条。
    注意:UITabBar的高度为 49.

    二、基本使用:

    1.初始化UITabBarController
    2.设置UIWindow的rootViewController为UITabBarController
    3.根据具体情况,通过addChildViewController方法添加对应个数的子控制器

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
        
        // 1.创建窗口
        self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
        
        self.window.backgroundColor = [UIColor blueColor];
        
        // 2.设置窗口的根控制器:默认显示的是第一个子控制器的View
        UITabBarController *tabVC = [[UITabBarController alloc] init];
        
        // 创建第一个控制器
        UIViewController *vc1 = [[UIViewController alloc] init];
        vc1.view.backgroundColor = [UIColor redColor];
        vc1.title = @"首页";
        UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:vc1];
        
        nav.tabBarItem.title = @"消息";
        nav.tabBarItem.badgeValue = @"10";
        nav.tabBarItem.image = [UIImage imageNamed:@"tab_recent_nor"];
        
        [tabVC addChildViewController:nav]; // 添加子控制器
        
        // 创建第二个控制器
        UIViewController *vc2 = [[UIViewController alloc] init];
        vc2.view.backgroundColor = [UIColor blueColor];
        vc2.tabBarItem.title = @"联系人";
        vc2.tabBarItem.image = [UIImage imageNamed:@"tab_buddy_nor"];
        [tabVC addChildViewController:vc2];
        
        // 创建第三个控制器
        UIViewController *vc3 = [[UIViewController alloc] init];
        vc3.view.backgroundColor = [UIColor whiteColor];
        vc3.tabBarItem.title = @"动态";
        vc3.tabBarItem.image = [UIImage imageNamed:@"tab_qworld_nor"];
        [tabVC addChildViewController:vc3];
        
        // 初始化时,选择的子控制器
        tabVC.selectedIndex = 1;
        
        self.window.rootViewController = tabVC;
        // 3.显示窗口
        [self.window makeKeyAndVisible];
        
        return YES;
    }
    
    • UITabBarController添加控制器的方式有2种:
    // 添加单个子控制器
    - (void)addChildViewController:(UIViewController *)childController;
    // 设置子控制器数组
    @property(nonatomic,copy) NSArray *viewControllers;
    
    三、实现原理:
    • 步骤:
      1 创建窗口
      2 创建TabController对象,设置窗口的根控制器,
      TabBarController被窗口根控制器强引用,所以不会被销毁。
      3 添加TabBarController子控制器
      添加的所有子控制器都保存在TabBarController的childViewControllers数组当中
      所以添加的子控制器也不会被销毁
      4 显示窗口(会把TabBarController的View添加到窗口上面)
    • 注意点:
      TabBarController默认做法是把它的第一个子控制器的View添加到TabBarController存放子控制器的View当中.(也可以设置第几个,改个属性就可以了)
      如果UITabBarController有N个子控制器,那么UITabBar内部就会有N个按钮
      点击每一个按钮,它会先把当前控制器的View从TabBarController存放子控件View的View当中移除(只是移除view,子控制器还在数组当中,没有移除)
      再把当前选中按钮对应的子控制器的View添加到TabBarController存放子控件的View当中

    相关文章

      网友评论

        本文标题:iOS UITabBarController详解

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