一、简介

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

二、UITabBarController的使用

1、首先初始化UITabBarController

2、设置UIWindow的rootViewController为UITabBarController

3、创建相应的子控制器(viewcontroller)

4、把子控制器添加到UITabBarController

代码:

//
// AppDelegate.m
// 微信
//
// Created by Oran Wu on 15-11-5.
// Copyright (c) 2015年 Xinxin. All rights reserved.
// #import "AppDelegate.h"
#import "WeChatViewController.h"
#import "AddressBookViewController.h"
#import "FindViewController.h"
#import "MyViewController.h" @interface AppDelegate () @end @implementation AppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
//创建Window
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; //创建子控制器
WeChatViewController *WeChatVC = [[WeChatViewController alloc] init];
AddressBookViewController *AddressBookVC = [[AddressBookViewController alloc] init];
FindViewController *FindVC = [[FindViewController alloc] init];
MyViewController *MyVC = [[MyViewController alloc] init]; //设置UITabBarButton的图片(normal)与选中时图片(selected)
UIImage *WeChatImage = [UIImage imageNamed:@"tabbar_mainframe"];
UIImage *WeChatSeletedImage = [UIImage imageNamed:@"tabbar_mainframeHL"];
WeChatVC.tabBarItem = [[UITabBarItem alloc] initWithTitle:@"微信" image:WeChatImage selectedImage:WeChatSeletedImage]; UIImage *AddressImage = [UIImage imageNamed:@"tabbar_contacts"];
UIImage *AddressSeletedImage = [UIImage imageNamed:@"tabbar_contactsHL"];
AddressBookVC.tabBarItem = [[UITabBarItem alloc] initWithTitle:@"通讯录" image:AddressImage selectedImage:AddressSeletedImage]; UIImage *FineImage = [UIImage imageNamed:@"tabbar_discover"];
UIImage *FineSeletedImage = [UIImage imageNamed:@"tabbar_discoverHL"];
FindVC.tabBarItem = [[UITabBarItem alloc] initWithTitle:@"发现" image:FineImage selectedImage:FineSeletedImage];
//提醒数字
FindVC.tabBarItem.badgeValue = @""; UIImage *MyImage = [UIImage imageNamed:@"tabbar_me"];
UIImage *MySeletedImage = [UIImage imageNamed:@"tabbar_meHL"];
MyVC.tabBarItem = [[UITabBarItem alloc] initWithTitle:@"我" image:MyImage selectedImage:MySeletedImage]; //初始化各ViewController的导航控制器
UINavigationController *WeChatNav = [[UINavigationController alloc] initWithRootViewController:WeChatVC];
UINavigationController *AddressBookNav = [[UINavigationController alloc] initWithRootViewController:AddressBookVC];
UINavigationController *FindNav = [[UINavigationController alloc] initWithRootViewController:FindVC];
UINavigationController *MyNav = [[UINavigationController alloc] initWithRootViewController:MyVC]; //初始化一个控制器
UITabBarController *TabBarCtrl = [[UITabBarController alloc] init];
TabBarCtrl.viewControllers = [NSArray arrayWithObjects:WeChatNav,AddressBookNav,FindNav,MyNav, nil]; //设置控制器为Window的根控制器
self.window.rootViewController = TabBarCtrl;
//设置window的背景颜色
self.window.backgroundColor = [UIColor whiteColor]; //设置Window为主窗口并显示出来
[self.window makeKeyAndVisible]; // Override point for customization after application launch.
return YES;
}

三、UITabBar

下方的工具条称为UITabBar ,如果UITabBarController有N个子控制器,那么UITabBar内部就会有N 个UITabBarButton作为子控件与之对应。

注意:UITabBarButton在UITabBar中得位置是均分的,UITabBar的高度为49。

在上面的程序中,UITabBarController有4个子控制器,所以UITabBar中有4个UITabBarButton,UITabBar的结构⼤大致如下图所示:

ios基础篇(八)——UITabBarController的简单介绍的更多相关文章

  1. iOS开发UI篇—UITableview控件简单介绍

    iOS开发UI篇—UITableview控件简单介绍 一.基本介绍 在众多移动应⽤用中,能看到各式各样的表格数据 . 在iOS中,要实现表格数据展示,最常用的做法就是使用UITableView,UIT ...

  2. Java入门到精通——基础篇之多线程实现简单的PV操作的进程同步

    Java入门到精通——基础篇之多线程实现简单的PV操作的进程同步 一.概述     PV操作是对信号量进行的操作.     进程同步是指在并发进程之间存在一种制约关系,一个进程的执行依赖另一个进程的消 ...

  3. iOS开发Swift篇—(一)简单介绍

    iOS开发Swift篇—简单介绍 一.简介 Swift是苹果于2014年WWDC(苹果开发者大会)发布的全新编程语言 Swift在天朝译为“雨燕”,是它的LOGO 是一只燕子,跟Objective-C ...

  4. 利用Python进行数据分析(7) pandas基础: Series和DataFrame的简单介绍

    一.pandas 是什么 pandas 是基于 NumPy 的一个 Python 数据分析包,主要目的是为了数据分析.它提供了大量高级的数据结构和对数据处理的方法. pandas 有两个主要的数据结构 ...

  5. Deep learning:三十八(Stacked CNN简单介绍)

    http://www.cnblogs.com/tornadomeet/archive/2013/05/05/3061457.html 前言: 本节主要是来简单介绍下stacked CNN(深度卷积网络 ...

  6. c# 扩展方法奇思妙用基础篇八:Distinct 扩展(转载)

    转载地址:http://www.cnblogs.com/ldp615/archive/2011/08/01/distinct-entension.html 刚看了篇文章 <Linq的Distin ...

  7. iOS基础篇(十五)——UIScrollView的基本用法

    滚动视图(UIScrollView)通常用于显示内容尺寸大于屏幕尺寸的视图. 一.基本属性 1.CGSize contentSize :设置UIScrollView的滚动范围 2.CGPoint co ...

  8. 第一篇:SpringBoot2.0简单介绍

    距离Spring Boot1.0发布已经4年了,今年3月份SpringBoot2.0正式发布.让我们一起来了解一下它. Spring Boot主要依赖于Spring,整合了很多框架的使用方式,帮助开发 ...

  9. c# 扩展方法奇思妙用基础篇八:Distinct 扩展

    刚看了篇文章 <Linq的Distinct太不给力了>,文中给出了一个解决办法,略显复杂. 试想如果能写成下面的样子,是不是更简单优雅 var p1 = products.Distinct ...

  10. 【Hadoop离线基础总结】Hue的简单介绍和安装部署

    目录 Hue的简单介绍 概述 核心功能 安装部署 下载Hue的压缩包并上传到linux解压 编译安装启动 启动Hue进程 hue与其他框架的集成 Hue与Hadoop集成 Hue与Hive集成 Hue ...

随机推荐

  1. Can of Worms 【迭代/线段树】

    题意:一条直线上有n个炸弹,给出每个炸弹的爆炸半径,可以引爆另一个炸弹爆炸.问:每个炸弹爆炸后,最多有几个炸弹一起爆炸? 迭代,用线段树更新. #include <cstdio> #inc ...

  2. 【转】Github 上传代码

    版权声明:欢迎转载(^ω^)~不过转载请注明原文出处:http://blog.csdn.net/catglory ლ(╹◡╹ლ) 写在前面: 弄了两小时终于搞定了,把经验整理下,方便我以后上传代码XD ...

  3. poj2074Line of Sight(直线相交)

    链接 几何细节题. 对于每一个障碍物可以求出它在地产线上的覆盖区间,如下图. 紫色部分即为每个障碍物所覆盖掉的区间,求出所有的,扫描一遍即可. 几个需要注意的地方:直线可能与地产线没有交点,可视区间可 ...

  4. show slave status

    Slave_IO_State: Waiting for master to send event                   Master_Host: 10.1.1.1             ...

  5. Android开发面试经——5.常见面试官提问Android题①

    版权声明:本文为寻梦-finddreams原创文章,请关注:http://blog.csdn.net/finddreams 关注finddreams博客: http://blog.csdn.net/f ...

  6. Android_程序结构分析

    一.Android程序运行过程 二.Android项目结构  

  7. Struts2文件上传

    1  在Struts2中上传文件需要 commons-fileupload-1.2.1.jar.commons-io-1.3.2.jar 这两个包. 2  确认页面form表单上的提交方式为POST, ...

  8. Microsoft VS 2008 过期解决方法

    开始>控制面板>添加或删除程序 里找到VS2008,点“更改/删除”,出现: 然后,打开“显示Visual Studio试用版序列号输入框小程序”的软件(单击链接可以转到下载地址),显示: ...

  9. mysql 保留两位小数

    mysql保留字段小数点后两位小数用函数:truncate(s.price,2)即可.如果想用四舍五入的话用round(s.price,2).  

  10. Linux下数据库的安装和使用

    数据库有多重要就不用说了,每一个计算机相关行业的人都必须要学会基本的数据库操作,因为你总会用到的. 之前转过一些学习资源: 与MySQL的零距离接触 - 慕课网 Python操作MySQL数据库 生物 ...