当前位置: 首页 > news >正文

iOS开发9:使用Tab Bar切换视图

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

上一篇文章提到了多视图程序中各个视图之间的切换,用的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、大功告成了,运行一下,看看效果吧:

 

 

转载于:https://my.oschina.net/plumsoft/blog/49748

相关文章:

  • 如何设置小型企业服务器机房
  • Vmware vSphere 5.0系列教程之二 Vmware vSphere 5.0安装
  • EasyStack助力OpenStack实现大规模部署
  • C++ class中写sort二级排序
  • 《深度学习:Java语言实现》一一2.3监督学习和无监督学习
  • 给浮躁的软件业同仁
  • CGI的函数
  • 晦涩难懂的shell命令
  • 虚拟防火墙方案
  • 在Android中自定义IOS风格的按钮
  • mysql批量删除相同前缀的表格
  • C++笔试题
  • 服务器大量的fin_wait1 状态长时间存在原因分析-1
  • java中常见的异常类
  • MS Word 组件Spire.Doc V6.0.5发布 | 修复了rtf 到pdf 的转换问题
  • 【EOS】Cleos基础
  • 【技术性】Search知识
  • 2017前端实习生面试总结
  • ES6核心特性
  • nginx 配置多 域名 + 多 https
  • OSS Web直传 (文件图片)
  • 阿里中间件开源组件:Sentinel 0.2.0正式发布
  • 编写符合Python风格的对象
  • 得到一个数组中任意X个元素的所有组合 即C(n,m)
  • 给自己的博客网站加上酷炫的初音未来音乐游戏?
  • 开源SQL-on-Hadoop系统一览
  • 判断客户端类型,Android,iOS,PC
  • 区块链分支循环
  • 我建了一个叫Hello World的项目
  • 协程
  • 写代码的正确姿势
  • 原创:新手布局福音!微信小程序使用flex的一些基础样式属性(一)
  • 好程序员大数据教程Hadoop全分布安装(非HA)
  • ​ 无限可能性的探索:Amazon Lightsail轻量应用服务器引领数字化时代创新发展
  • ​2021半年盘点,不想你错过的重磅新书
  • #Z0458. 树的中心2
  • #我与虚拟机的故事#连载20:周志明虚拟机第 3 版:到底值不值得买?
  • %check_box% in rails :coditions={:has_many , :through}
  • (4)(4.6) Triducer
  • (70min)字节暑假实习二面(已挂)
  • (C语言)求出1,2,5三个数不同个数组合为100的组合个数
  • (Java)【深基9.例1】选举学生会
  • (ros//EnvironmentVariables)ros环境变量
  • (板子)A* astar算法,AcWing第k短路+八数码 带注释
  • (超简单)使用vuepress搭建自己的博客并部署到github pages上
  • (独孤九剑)--文件系统
  • (附源码)apringboot计算机专业大学生就业指南 毕业设计061355
  • (附源码)小程序儿童艺术培训机构教育管理小程序 毕业设计 201740
  • (六)什么是Vite——热更新时vite、webpack做了什么
  • (一) springboot详细介绍
  • (转) Face-Resources
  • .net core 6 redis操作类
  • .NET Framework 和 .NET Core 在默认情况下垃圾回收(GC)机制的不同(局部变量部分)
  • .net 反编译_.net反编译的相关问题
  • .NET 使用配置文件