一、简介

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. [SAP ABAP开发技术总结]选择屏幕——PARAMETERS

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  2. .net 常用Response.ContentType

    来源:http://blog.csdn.net/navy235/article/details/5982319 不同的ContentType 会影响客户端所看到的效果.默认的ContentType为 ...

  3. 第二篇,MVC框架

    MVC : 模型(model)---视图(view)---控制器(caontreller)的缩写 MVC是一个设计模式,他强制性的使应用程序的输入,处理,输出 分开 模型(Model):程序员编写程序 ...

  4. Linux Shell Bash 带有特殊含义的退出码

    linux在执行完一条命令后,使用 echo $? 会显示上一条命令是否执行成功,相关状态码如下 0为成功 表格 D-1. "保留的"退出码 退出码的值 含义 例子 注释 1 通用 ...

  5. SQL 总结

    1. select 使用正则表达式 正则表达式的模式串, 与linux基本相同, oracle提供以下4个函数来支持正则表达式: REGEXP_LIKE: 比较一个字符串是否与正则表达式匹配(看来是返 ...

  6. 使用JSPatch平台热修复iosApp

    IOS产品开发中常常会遇到这种情况,线上发现一个严重bug,可能是一个crash,可能是一个功能无法使用,这时能做的只是赶紧修复Bug然后提交等待漫长的审核,即使申请加急也不会快到那里去,即使审核完了 ...

  7. 自我总结(六)---(学习j2ee+j2ee第一阶段项目)

    自我完善的过程就是在不断的自我总结不断的改进. 学习了Struts2 Spring Hibernate. 十天前结束了这个课程.也考试了.这次考试老师说机试考的还不错.其实就是一个简单的用户登录,进行 ...

  8. python中用filter求素数

    #用filter求素数 #生成器,生成一个无限序列 def _odd_iter(): n=1 while True: n=n+2 yield n #筛选函数 def _not_divisible(n) ...

  9. Java 7 命令/工具 jcmd 使用详细解释

    常见功能 列出 Java 进程 PID 以及 名称 列出进程的 thread dump 得到进程的 heap dump 得到进程的 JVM 参数 具体如下: 列出 Java 进程 PID 以及 名称 ...

  10. Intent 隐式跳转,向下一个活动传递数据,向上一个活动返回数据。

    一.每个Intent只能指定一个action,多个Category. 使用隐式跳转,我们不仅可以跳转到自己程序内的活动,还可以启动其他程序的活动.使得Android多个程序之间的功能共享成为可能. 例 ...