码农的世界

iOS UITabBarController详解

2017-12-17  本文已影响39人  齐舞647

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;
}
// 添加单个子控制器
- (void)addChildViewController:(UIViewController *)childController;
// 设置子控制器数组
@property(nonatomic,copy) NSArray *viewControllers;
三、实现原理:
上一篇 下一篇

猜你喜欢

热点阅读