使用Tab Bar切换视图
上一篇文章提到了多视图程序中各个视图之间的切换,用的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切换视图相关推荐
- iOS开发8:使用Tool Bar切换视图
之前讨论的都是单视图应用程序,而在实际应用中,我们可能要多个视图,并根据用户的需要切换视图. iOS中几种典型的多视图程序: (1)Tab Bar Application:程序的底部有一排按钮,轻触其 ...
- 使用Tool Bar切换视图
之前讨论的都是单视图应用程序,而在实际应用中,我们可能要多个视图,并根据用户的需要切换视图. iOS中几种典型的多视图程序: (1)Tab Bar Application:程序的底部有一排按钮,轻触其 ...
- Tab Bar Animation
2019独角兽企业重金招聘Python工程师标准>>> 自定义UITabBar.自定义Tab Bar切换过程中的动画效果.用户点击某个Tab,一个小箭头会从之前的Tab上面移动到当前 ...
- Navigation + Tab Bar 常用组合框架
看到很多项目中都采用的是Navigation加Tab Bar组合到一起,完成视图切换操作,在导航栏上添加基本按钮,给予响应时间,让应用给用户更好的体验,所以本菜鸟写了这个这样一个Demo,仅供学习 所 ...
- ios开发学习--选项卡(Tab Bar) 效果源码分享--系列教程
自定义UITabBar 介绍: 自定义UITabBar,包括可自定义tab bar的背景图.tab bar的高度以及每个tab的图片,满足各种界面需求.但是,没有文字. http://ios.itmd ...
- win10切换视图快捷键and其他
摸鱼必备 除了通过笔记被触摸板切换,快捷键也要了解一下. windows快捷键 打开任务视图 win + Tab 切换视图 win + Ctrl + ←/→ 添加视图 win + Ctrl + D 关 ...
- Windows 10 修改 Alt+Tab 键 切换 新版 Microsoft Edge 单个标签页窗口
Windows 10 修改 Alt+Tab 键 切换 新版 Microsoft Edge 单个标签页/窗口 解决方案:在 Windows 设置 的搜索框中 搜索 alt,选择 选择按下 Alt+Tab ...
- 解决echart在tab中切换时显示不正确
在VUE使用Element UI时,在el-tab-pane添加上lazy='true'属性即可 <el-tab-pane label="远程测试控制" name=" ...
- Windows 10 修改 Alt+Tab 键 切换 新版 Microsoft Edge 单个标签页/窗口
Windows 10 修改 Alt+Tab 键 切换 新版 Microsoft Edge 单个标签页/窗口 解决方案:在 Windows 设置 的搜索框中 搜索 alt,选择 选择按下 Alt+Tab ...
最新文章
- cmd中运行python文件,并带参数
- 【频谱分配】基于频谱空洞预留算法的频谱分配算法的matlab仿真
- linux 权限中加号,关于Linux中权限列中的加号及点的深度探索
- VTK:图片之Interpolation
- 常用加密算法的Java实现(一)
- Uncaught TypeError: this.canvas.getContext is not a function
- arcgis engine设置数据源路径_不懂ArcGIS,你前期分析用什么做的?
- python的计算_基于python实现的计算器
- QCC3007--打印库文件 log
- JMP入门官方文档---发现JMP.pdf---中文版
- 【软工】week3-个人阅读作业-软件案例分析
- 工程施工工地进度监控带天气经纬度相机(监理日志不再难写)
- Cocos2d摄像机详解
- 心电信号质量评估——ecg_qc工具包介绍(二)
- ECMAScript 简介
- 程序员“真实”日常:每天敲代码不到 1 小时
- 语音识别sdk_语音识别 sdk_离线语音识别sdk - 云+社区 - 腾讯云
- 2014,微信是糖,甜到忧伤
- 手机视频监控解决方案(客户端)
- 图像处理:推导Canny边缘检测算法
热门文章
- 信息学奥赛C++语言:求各位数和2
- mysql查询索引位置_mysql索引在什么位置
- Anaconda+Win10安装
- 04简单线性回归实战
- IDEA创建Scala
- CSS3 :nth-child() ,nth-of-type(),nth-last-child() ,nth-last-of-type()
- oracle查询两个分区,oracle下 分区表部分分区查询慢有关问题(2)
- Eslint 配置 + 规则说明 - 综合引入篇
- 左右黑白极简滚动个人主页模板
- 适用于各类软件工具下载页面官网单页静态网站源码