上一篇文章提到了多视图程序中各个视图之间的切换,用的Tool Bar,说白了还是根据触发事件使用代码改变Root View Controller中的Content View。这次,我们还是讲一讲切换视图,不过这次使用的是Tab Bar。

这次要写的程序运行起来的效果是这样的:底部有几个图标,每个图标对应一个视图。每点击一个图标,对应的视图就会打开。如下图,就是我们做好的程序效果:

每个Tab Bar有一个对应颜色的视图。

为了搞清使用Tab Bar切换视图的原理,我们还是从Empty Application开始创建我们的程序。

1、运行Xcode 4.2,新建一个Empty Application,名称为Tab Bar Application,其他设置如下图:

2、为工程添加图标文件:

这里要添加的图标文件是用来定制各Tab Bar的。首先新建一个Group,选择File — New — New Group,创建好后给新的Group重命名为Icons。然后,将准备好的四个图标文件拖到Group中,在弹出的窗口选择Copy items……(if needed),如下图:

4、创建四个View Controller:

选中Tab Bar Application这个Group,然后选择File — New — New File,在弹出的窗口,左边选择Cocoa Touch,右边选择UIViewController subclass,之后选Next,在弹出的窗口中,输入名称BlueViewController,并选中With xib,如下图:

然后选择Next,选好位置,点击Create,这样就创建了一个ViewController。以同样的方式再创建三个,名称分别是GreenViewController,RedViewController,YellowViewController。

5、创建TabBarController.xib:

选中Tab Bar Application这个Group,然后选择File — New — New File,在弹出的窗口,左边选择User Interface,右边选择Empty:

然后点Next,在弹出的窗口输入名称TabBarController,选好位置后点击Create。

之后,在Group中点击TabBarController.xib,你会发现跟BlueViewController.xib不一样,里边没有一个像View一样的窗口,不要着急,我们拖一个Tab Bar Controller到里边:

6、在上图中选择File’s Owner,打开Identity Inspector,在Class一栏选择AppDelegate:

这样,我们就可以从TabBarController.xib向AppDelegate创建OutLet映射了。

7、打开Assistant Editor,保证Assistant Editor中打开的是AppDelegate.h,在左边选中Tab Bar Controller,按住Control,往AppDelegate.h中创建映射:

然后在弹出的窗口输入rootController,点击Connect:

打开AppDelegate.m,在didFinishLaunchingWithOptions方法中添加代码:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];// Override point for customization after application launch.[[NSBundle mainBundle] loadNibNamed:@"TabBarController" owner:self options:nil]; [self.window addSubview:self.rootController.view]; self.window.backgroundColor = [UIColor whiteColor];[self.window makeKeyAndVisible];return YES;
}

8、单击TabBarController.xib,拖两个Tab Bar Item到Tab Bar上:

9、选中第一个View Controller,在右边打开Identity Inspector,在Class中选择BlueViewController:

然后,打开Attribute,在NIB Name选择BlueViewController:

对其他的View Controller进行同样的操作,依次设成GreenViewController、RedViewController、YellowViewController。

10、设置Tab Bar图标和文字:

展开Blue View Controller,选中其中的Tab Bar Item,打开Attribute,如下图:

Badge属性:设置的文字将以红色图标形式显示出来,比如,这个Tab显示的是Mail视图,你可以用Badge显示有多少封未读邮件。

Identifier属性:这个属性对应的下拉菜单中,如果你选择的是不是Custom,比如是Favorite,那么这个Tab Bar的名称和图标就都设置好了。我们这里选择Custom。

在Title输入Blue,在Image选择Blue.png。

对其他Tab Bar Item进行类似操作,这样之后,整个Tab Bar如下图所示:

11、现在单击.xib,选中View,打开Attribute Inspector,将其背景颜色改成蓝色。然后,在Simulated Metrics中设置Bottom Bar为Tab Bar:

对GreenViewController、RedViewController和YellowViewController进行同样设置,不过背景颜色要设成与其名称相对应的。

12、大功告成了,运行一下,看看效果吧:

来源:http://my.oschina.net/plumsoft/blog/49748

使用Tab Bar切换视图相关推荐

  1. iOS开发8:使用Tool Bar切换视图

    之前讨论的都是单视图应用程序,而在实际应用中,我们可能要多个视图,并根据用户的需要切换视图. iOS中几种典型的多视图程序: (1)Tab Bar Application:程序的底部有一排按钮,轻触其 ...

  2. 使用Tool Bar切换视图

    之前讨论的都是单视图应用程序,而在实际应用中,我们可能要多个视图,并根据用户的需要切换视图. iOS中几种典型的多视图程序: (1)Tab Bar Application:程序的底部有一排按钮,轻触其 ...

  3. Tab Bar Animation

    2019独角兽企业重金招聘Python工程师标准>>> 自定义UITabBar.自定义Tab Bar切换过程中的动画效果.用户点击某个Tab,一个小箭头会从之前的Tab上面移动到当前 ...

  4. Navigation + Tab Bar 常用组合框架

    看到很多项目中都采用的是Navigation加Tab Bar组合到一起,完成视图切换操作,在导航栏上添加基本按钮,给予响应时间,让应用给用户更好的体验,所以本菜鸟写了这个这样一个Demo,仅供学习 所 ...

  5. ios开发学习--选项卡(Tab Bar) 效果源码分享--系列教程

    自定义UITabBar 介绍: 自定义UITabBar,包括可自定义tab bar的背景图.tab bar的高度以及每个tab的图片,满足各种界面需求.但是,没有文字. http://ios.itmd ...

  6. win10切换视图快捷键and其他

    摸鱼必备 除了通过笔记被触摸板切换,快捷键也要了解一下. windows快捷键 打开任务视图 win + Tab 切换视图 win + Ctrl + ←/→ 添加视图 win + Ctrl + D 关 ...

  7. Windows 10 修改 Alt+Tab 键 切换 新版 Microsoft Edge 单个标签页窗口

    Windows 10 修改 Alt+Tab 键 切换 新版 Microsoft Edge 单个标签页/窗口 解决方案:在 Windows 设置 的搜索框中 搜索 alt,选择 选择按下 Alt+Tab ...

  8. 解决echart在tab中切换时显示不正确

    在VUE使用Element UI时,在el-tab-pane添加上lazy='true'属性即可 <el-tab-pane label="远程测试控制" name=" ...

  9. Windows 10 修改 Alt+Tab 键 切换 新版 Microsoft Edge 单个标签页/窗口

    Windows 10 修改 Alt+Tab 键 切换 新版 Microsoft Edge 单个标签页/窗口 解决方案:在 Windows 设置 的搜索框中 搜索 alt,选择 选择按下 Alt+Tab ...

最新文章

  1. cmd中运行python文件,并带参数
  2. 【频谱分配】基于频谱空洞预留算法的频谱分配算法的matlab仿真
  3. linux 权限中加号,关于Linux中权限列中的加号及点的深度探索
  4. VTK:图片之Interpolation
  5. 常用加密算法的Java实现(一)
  6. Uncaught TypeError: this.canvas.getContext is not a function
  7. arcgis engine设置数据源路径_不懂ArcGIS,你前期分析用什么做的?
  8. python的计算_基于python实现的计算器
  9. QCC3007--打印库文件 log
  10. JMP入门官方文档---发现JMP.pdf---中文版
  11. 【软工】week3-个人阅读作业-软件案例分析
  12. 工程施工工地进度监控带天气经纬度相机(监理日志不再难写)
  13. Cocos2d摄像机详解
  14. 心电信号质量评估——ecg_qc工具包介绍(二)
  15. ECMAScript 简介
  16. 程序员“真实”日常:每天敲代码不到 1 小时
  17. 语音识别sdk_语音识别 sdk_离线语音识别sdk - 云+社区 - 腾讯云
  18. 2014,微信是糖,甜到忧伤
  19. 手机视频监控解决方案(客户端)
  20. 图像处理:推导Canny边缘检测算法

热门文章

  1. 信息学奥赛C++语言:求各位数和2
  2. mysql查询索引位置_mysql索引在什么位置
  3. Anaconda+Win10安装
  4. 04简单线性回归实战
  5. IDEA创建Scala
  6. CSS3 :nth-child() ,nth-of-type(),nth-last-child() ,nth-last-of-type()
  7. oracle查询两个分区,oracle下 分区表部分分区查询慢有关问题(2)
  8. Eslint 配置 + 规则说明 - 综合引入篇
  9. 左右黑白极简滚动个人主页模板
  10. 适用于各类软件工具下载页面官网单页静态网站源码