iOS开发之UITabBarController

本文详细介绍了iOS开发中UITabBarController的使用方法,包括其组成结构、存储控制器原理及具体实现步骤。通过实例演示如何创建并配置UITabBarController,以及如何添加子控制器。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

之前说过,多控制器管理方式有两种,一种是UINavigationController,一种是UITabBarController。前者已经讲解过。现在来讲解后者:UITabBarController。

跟UINavigationController类似,UITabBarController也可以轻松地管理多个控制器,轻松完成控制器之间的切换,典型例子就是QQ、微信等应用。


UITabBarController的组成结构。以下是官方文档的介绍。

A standard tab bar interface consists of the followingobjects:

1.A UITabBarControllerobject

2.One contentview controller object for each tab

3.An optionaldelegate object

就是说:一个UITabBarController视图包含:1个UITabBarController对象;每个标签对应的子控制器;1一个代理对象。

UITabBarController存储控制器原理:和UINavigationController相同,也是一个栈来存储其中的子控制器。不同点是,当切换控制器的时候,上一个控制器不会被销毁。如图:(图很丑啊,见谅)

使用UITabBarController:

       UITabBarController的创建方式跟UINavigationController是一样的,在这里就不再过多赘述。(在这里使用代码创建)

UITabBarController的使用步骤

1.初始化UITabBarController

2.设置UIWindow的rootViewController为UITabBarController

3.根据具体情况,通过addChildViewController方法添加对应个数的子控制器

上代码:(创建空项目)

在项目中New Files…三个控制器(将来作为UITabBarController的子控制器)


以下代码是创建UITabBarController,并初始化子控制器,将UITabBarController设置为窗口根控制器。(AppDelegate.m)

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    
    //创建窗口
    self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
    self.window.backgroundColor = [UIColor whiteColor];
    
    //创建子控制器,并设置不同的颜色
    HXOneViewController *oneVC = [[HXOneViewController alloc] init];
    oneVC.view.backgroundColor = [UIColor redColor];
    HXTwoViewController *twoVC = [[HXTwoViewController alloc] init];
    twoVC.view.backgroundColor = [UIColor greenColor];
    HXThreeViewController *threeVC = [[HXThreeViewController alloc] init];
    threeVC.view.backgroundColor = [UIColor blueColor];
    
    // 创建UITabBarController
    UITabBarController *tabbarC = [[UITabBarController alloc] init];
    
    // 向UITabBarController添加自控制器
    // 1.一个一个添加
//    [tabbarC addChildViewController:oneVC];
//    [tabbarC addChildViewController:twoVC];
//    [tabbarC addChildViewController:threeVC];
    // 2.一次性添加
    tabbarC.viewControllers = @[oneVC, twoVC, threeVC];
    
    //设置窗口主视图
    self.window.rootViewController = tabbarC;
    //使窗口可见
    [self.window makeKeyAndVisible];
    
    return YES
}

运行效果:(底部的标签栏(UITabBar)上的三种颜色的框代表三种不同的控制器,点击相应的框会切换到对应的控制器)


解析和UITabBarController相关的控件:

1.    UITabBar

1>如果UITabBarController有N个子控制器,那么UITabBar内部就会有N个UITabBarButton作为子控件

2>如果UITabBarController有3个子控制器,那么UITabBar的结构大致如下图所示


注意:UITabBarItem里面封装了UITabBarButtonUITabBarButton里面显示什么内容,由对应子控制器的tabBarItem属性决定,这里就不再赘述UITabBarItem的属性了。可自学。

到这里我们已经把两个管理控制器的控制器基本上讲解完了。但是在实际开发项目中并不是单独使用某个控制器去管理其他控制器的。也就是说UITabBarController和UINavigationController经常会一起使用来管理控制器,开发项目。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值