Swift - 标签条(UITabBar)标签页控制器(UITabBarController)用法
App底部的tab标签页可以方便的把功能模块划分清楚,只需点击相应的标签页就可以展示完全独立的视图页面,同时各标签页间的视图也可以进行数据交换。


Controller放入一个Tab Bar Item。然后建立Tab Bar Controller和新建的View
Controller之间的segue关联。即按住Ctrl键,拖动Tab Bar Controller到View
Controller,在弹出的上下文菜单中选择View Controller即可。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
import UIKit class ViewController : UIViewController , UITabBarDelegate { //添加Tab Bar控件 var tabBar: UITabBar ! //Tab Bar Item的名称数组 var tabs = [ "公开课" , "全栈课" , "设置" ] //Tab Bar上方的容器 var contentView: UIView ! override func viewDidLoad() { super .viewDidLoad() // Do any additional setup after loading the view, typically from a nib. //在底部创建Tab Bar tabBar = UITabBar (frame: CGRectMake (0, CGRectGetHeight ( self .view.bounds)-64, CGRectGetWidth ( self .view.bounds),44)) var items:[ UITabBarItem ] = [] for tab in self .tabs { var tabItem = UITabBarItem () tabItem.title = tab items.append(tabItem) } //设置Tab Bar的标签页 tabBar.setItems(items, animated: true ) //本类实现UITabBarDelegate代理,切换标签页时能响应事件 tabBar.delegate = self //代码添加到界面上来 self .view.addSubview(tabBar); //上方的容器 contentView = UIView (frame: CGRectMake (0,0, CGRectGetWidth ( self .view.bounds), CGRectGetHeight ( self .view.bounds)-44)) self .view.addSubview(contentView) var lbl = UILabel (frame: CGRectMake (100,200,100,20)) //定义tag,在用户切换tab时能查询到label控件 lbl.tag = 1 contentView.addSubview(lbl) } override func didReceiveMemoryWarning() { super .didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } // UITabBarDelegate协议的方法,在用户选择不同的标签页时调用 func tabBar(tabBar: UITabBar !, didSelectItem item: UITabBarItem !) { //通过tag查询到上方容器的label,并设置为当前选择的标签页的名称 (contentView.viewWithTag(1) as UILabel ).text = item.title } } |
3,使用代码实现标签页控制器(TabBarController)



--- ViewController.swift ---
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
import UIKit class ViewController : UIViewController { override func viewDidLoad() { super .viewDidLoad() // Do any additional setup after loading the view, typically from a nib. let button: UIButton = UIButton (type: UIButtonType . System ) button.frame= CGRectMake (100, 150, 100, 30) button.setTitle( "开始游戏" , forState: UIControlState . Normal ) button.addTarget( self ,action: Selector ( "tapped" ),forControlEvents: UIControlEvents . TouchUpInside ) self .view.addSubview(button); } func tapped(){ self .presentViewController( MainTabViewController (), animated: true , completion: nil ) } override func didReceiveMemoryWarning() { super .didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } } |
--- MainTabViewController.swift ---
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
import UIKit class MainTabViewController : UITabBarController { override func viewDidLoad() { super .viewDidLoad() //一共包含了两个视图 let viewMain = MainViewController () viewMain.title = "2048" let viewSetting = SettingViewController () viewSetting.title = "设置" //分别声明两个视图控制器 var main = UINavigationController (rootViewController:viewMain) main.tabBarItem.image = UIImage (named: "first" ) var setting = UINavigationController (rootViewController:viewSetting) setting.tabBarItem.image = UIImage (named: "second" ) self .viewControllers = [main,setting] //默认选中的是游戏主界面视图 self .selectedIndex = 0 } } |
--- MainViewController.swift ---
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
import UIKit class MainViewController : UIViewController { override func viewDidLoad() { super .viewDidLoad() //改成主视图背景白色背景 self .view.backgroundColor = UIColor .whiteColor() } override func didReceiveMemoryWarning() { super .didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } } |
--- SettingViewController.swift ---
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
import UIKit class SettingViewController : UIViewController { override func viewDidLoad() { super .viewDidLoad() self .view.backgroundColor = UIColor (red:109/255, green:218/255, blue:255/255, alpha:1) } override func didReceiveMemoryWarning() { super .didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } } |
Swift - 标签条(UITabBar)标签页控制器(UITabBarController)用法的更多相关文章
- 标签视图控制器UITabBarController
标签视图控制器 UITabBarController FirstViewController*first = [[FirstViewController alloc] init]; //创建一个UIT ...
- UITabBarController — 标签视图控制器
UITabBarController - 标签视图控制器 UITabBarController 分为三层结构: (1).tab bar (2.)Custom Content (3.). Tab bar ...
- UITabBarController ---- 标签视图控制器
直接上代码: // // AppDelegate.m // // #import "AppDelegate.h" #import "RootViewController. ...
- Bootstrap标签页(Tab)插件
标签页(Tab)在Bootstrap导航元素一章中简介过,通过结合一些data属性,您可以轻松地创建一些标签页界面.通过这个插件您可以把内容放置在标签页或胶囊式标签页甚至是下拉菜单标签页中. 用法 您 ...
- swift:简单使用翻页控制器UIPageViewController
一.小叙 UIPageViewController是一个实现图书阅读的控制器,使用它可以设置书脊位置.单双页.过渡效果等,它是通过代理的方式来实现翻页,也即上一页.下一页.最终这个UIPageView ...
- 用标签页TitleSwitch切换不通的控制器
用标签页TitleSwitch切换不通的控制器 教程效果: 项目开发中效果: 各种源码: TitleSwitch.h 与 TitleSwitch.m (这个是修改过的升级版本) // // Title ...
- Bootstrap 标签页和工具提示插件
一.标签页 标签页也就是通常所说的选项卡功能. //基本用法 <ul class="nav nav-tabs"> <li class="active&q ...
- JavaScript插件——标签页
JavaScript插件——标签页 前言 阅读之前您也可以到Bootstrap3.0入门学习系列导航中进行查看http://www.cnblogs.com/aehyok/p/3404867.html ...
- js基础--浏览器标签页隐藏或显示状态 visibility详解
欢迎访问我的个人博客:http://www.xiaolongwu.cn 前言 在工作中我们可能会遇到这样的需求,当浏览器切换到别的标签页或着最小化时,我们需要暂停页面上正在播放的视频或者音乐,这个需求 ...
随机推荐
- HTML5 上播放视频格式兼容性
视频格式 当前,video 元素支持三种视频格式: 格式 IE Firefox Opera Chrome Safari Ogg No 3.5+ 10.5+ 5.0+ No MPEG 4 9.0+ No ...
- 打开sa属性报错
--如果打开sa属性报错如下:无法显示请求的对话框.属性IsLocked不可用于“登录名sa".该对象可能没有此属性,也可能是访问权限不足而无法检索 --解决办法:首先用windows登录, ...
- WCF技术剖析之二十七: 如何将一个服务发布成WSDL[基于WS-MEX的实现](提供模拟程序)
原文:WCF技术剖析之二十七: 如何将一个服务发布成WSDL[基于WS-MEX的实现](提供模拟程序) 通过<如何将一个服务发布成WSDL[编程篇]>的介绍我们知道了如何可以通过编程或者配 ...
- 服务列表 - Sina App Engine
服务列表 - Sina App Engine 短信服务 新浪无线短信服务是由新浪无线提供的综合性短信服务. 使用服务 下载SDK: php 服务首页 方法 新浪无线短信服务是由新浪无线提供的综合性短信 ...
- 苹果2014WWDC亮点之个人浅见
这届WWDC给人的整体感觉是融合.设备(手机IOS)和设备(电脑MAC OS X)的融合,人与信息的融合(SpotLight),人与代码的融合(Swift),人与人和设备的融合(HomeKit),接下 ...
- jqGrid笔记@简单实现
jqGrid在MVC中的版本是已经通过 HtmlHelper 的扩展方法封装后的产物,webForm版本貌似也将其封装成了服务器端空间,所以我推荐下载原生的jqGrid版本的地址为:http://ww ...
- 柔性数组-读《深度探索C++对象模型》有感
最近在看<深度探索C++对象模型>,对于Struct的用法中,发现有一些地方值得我们借鉴的地方,特此和大家分享一下,此间内容包含了网上搜集的一些资料,同时感谢提供这些信息的作者. 原文如下 ...
- 利用Ihttpmodel实现网站缓存,解决Server.Transfer 直接输出HTML源代码的问题
今天在用.NET利用IHttpModel实现网站静态缓存的时候,不知道最后为什么用 Server.Transfer(html)的时候结果输出的是HTML的源代码. 贴上源代码 using System ...
- C++ 中使用boost::property_tree读取解析ini文件
boost 官网 http://www.boost.org/ 下载页面 http://sourceforge.net/projects/boost/files/boost/1.53.0/ 我下载的是 ...
- svn 标示提示
原来没有遇到过, 突然发现这次写的项目有几个文件时 这个"表示的" ,死活找不到原因,并且提交,改动 都好烦人,还要锁定什么嘛的. 最后最终知道, 这个意思是 文件的状态为 &q ...