- 浏览: 13628439 次
- 性别:
- 来自: 洛杉矶
文章分类
- 全部博客 (1994)
- Php / Pear / Mysql / Node.js (378)
- Javascript /Jquery / Bootstrap / Web (435)
- Phone / IOS / Objective-C / Swift (137)
- Ubuntu / Mac / Github / Aptana / Nginx / Shell / Linux (335)
- Perl / Koha / Ruby / Markdown (8)
- Java / Jsp (12)
- Python 2 / Wxpython (25)
- Codeigniter / CakePHP (32)
- Div / Css / XML / HTML5 (179)
- WP / Joomla! / Magento / Shopify / Drupal / Moodle / Zimbra (275)
- Apache / VPN / Software (31)
- AS3.0/2.0 / Flex / Flash (45)
- Smarty (6)
- SEO (24)
- Google / Facebook / Pinterest / SNS (80)
- Tools (22)
最新评论
-
1455975567:
xuezhongyu01 写道wocan23 写道我想问下那个 ...
Mysql: LBS实现查找附近的人 (两经纬度之间的距离) -
xuezhongyu01:
wocan23 写道我想问下那个111.1是怎么得来的我也看不 ...
Mysql: LBS实现查找附近的人 (两经纬度之间的距离) -
18335864773:
试试 pageoffice 在线打开 PDF 文件吧. pag ...
jquery在线预览PDF文件,打开PDF文件 -
青春依旧:
opacity: 0.5; 个人喜欢这种方式!关于其他css特 ...
css透明度的设置 (兼容所有浏览器) -
July01:
推荐用StratoIO打印控件,浏览器和系统的兼容性都很好,而 ...
搞定网页打印自动分页问题
在 UIKit 中UITabbar 代表了标签栏,而 UITabBarController 对其进行了封装,令多个不同的视图管理与切换变的更加轻松。
构建一个标签栏控制器,首先要为每个按钮准备一个单独的页。每一页都应被创建为UIViewController对象。
构建一个控制器数组:
你的应用程序可能有多个不同的试图控制器,来实现不同的功能。如果你在写一个音乐播放器,可能会有一些控制器,如:MusicList、CurrentPlay、Favourite、SingerList、Settings 等。在创建你的标签栏之前,你应该首先创建一个数组,在其中放置你希望在标签栏中显示的视图控制器对象。
//生成各个视图控制器 MusicList* musicList = [[[MusicList alloc]init]autorelease]; CurrentPlay* currentPlay = [[[CurrentPlay alloc]init]autorelease]; Favourite* favourite = [[[Favourite alloc]init]autorelease]; SingerList* singerList = [[[SingerList alloc]init]autorelease]; Settings* settings = [[[Settings alloc]initWithStyle:UITableViewStyleGrouped]autorelease]; //加入一个数组 NSArray* controllerArray = [[NSArray alloc]initWithObjects:musicList,currentPlay,favourite,singerList,settings ,nil];
配置按钮属性:
每个标签栏都有他自己的“标签”,定义了他的标签按钮是什么样子。在视图控制器的 init 方法中,可以配置标签栏按钮,定义视图的标题与/或 tabBarItem 属性:
- (id)initWithStyle:(UITableViewStyle)style{ self = [super initWithStyle:style]; if (self) { self.tabBarItem = [[UITabBarItem alloc]initWithTitle:@"Settings" image:[UIImage imageNamed:@"Setting"] tag:4]; } return self; }
请将 tabBarItem 属性设置为一个 UITabBarItem 对象。你有两种方法可以初始化标签栏中的项目。一种是initWithTitle 可以让你自定义标题和图像等数据来显示按钮。另一种就是创建系统提供的按钮。后者如下:
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if (self) { self.tabBarItem = [[UITabBarItem alloc]initWithTabBarSystemItem:UITabBarSystemItemFavorites tag:2]; } return self; }
系统提供的按钮如下:
typedef enum { UITabBarSystemItemMore, UITabBarSystemItemFavorites, UITabBarSystemItemFeatured, UITabBarSystemItemTopRated, UITabBarSystemItemRecents, UITabBarSystemItemContacts, UITabBarSystemItemHistory, UITabBarSystemItemBookmarks, UITabBarSystemItemSearch, UITabBarSystemItemDownloads, UITabBarSystemItemMostRecent, UITabBarSystemItemMostViewed, } UITabBarSystemItem;
显示标签栏控制器:
标签栏所需的各个控制器都好了,现在就可以生成我们的标签栏控制器了。忘了讲了,控制器我是在
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 中生成的。
//创建UITabBarController控制器 UITabBarController* tabBarController = [[UITabBarController alloc]init]; //设置UITabBarController控制器的viewControllers属性为我们之前生成的数组controllerArray tabBarController.viewControllers = controllerArray; // 默认选择第2个视图选项卡(索引从0开始的) tabBarController.selectedIndex = 1; // 把tabBarController的view作为子视图添加到window [self.window addSubview:tabBarController.view];
可定制按钮
默认情况下,当按钮多于5个时,标签栏控制器允许拥护对按钮布局进行定制。要做到这一点,可以单击标有“更多”的标签,然后单击随之出现的导航栏上的编辑按钮。你可以选择只对某些特定的标签进行定制,也可以完全禁止定制。要允许定制,请将标签栏控制器的 customizableViewControllers 设置为一个数组,数组中包含有你希望用户进行定制的试图控制器:
导航
当标签栏控制器被显示时,控制器自己处理导航操作,会将选中标签对应视图自动切换到屏幕前端。要读取或者更改当前活动的试图控制器,可以使用 selectedViewController 属性:
tabBarController.selectedViewController = musicList; //读取 UIViewController* activeController = tabBarController.selectedViewController; if(activeController == musicList){ // }
也可以使用索引:
tabBarController.selectedIndex = 1;
委托代理
要在标签栏上的视图被选中时得到通知,请赋予标签栏控制器一个委托:
tabBarController.delegate = self;
委托会在选中一个tab时得到通知,然后 didSelectViewController 的委托方法会被调用:
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController{ /*添加代码,处理定制标签栏结束之后的操作*/ }
至此结束,最后附上代码工程文件。
UITabBarViewControllerDemo
来源:http://blog.csdn.net/iukey/article/details/7318290
- UITabBarControllerDemo.zip (122.8 KB)
- 下载次数: 69
发表评论
-
手机firebug查看网页代码 How to View Website Source Codes on iPad / iPhone
2016-04-26 02:41 1120You’re using your iPad to br ... -
Android模拟器genymotion的安装和使用
2016-03-18 01:16 2470Genymotion概述 Genymotion是一套完整的 ... -
编码之道:取个好名字很重要
2015-10-14 05:19 1116代码就是程序员的孩子,给“孩子”取个好听的名字很重 ... -
Genymotion - 强大好用高性能的 Android 模拟器 (在电脑流畅运行APK安卓软件游戏的利器)
2015-06-05 13:34 7319随着 Android 系统的应用和游戏越来越丰富,甚至有 ... -
收集几个移动平台浏览器的User-Agent
2014-07-23 02:33 2970List of all Mobile Browsers ... -
常用浏览器修改User-Agent的方法
2014-06-28 02:58 10901之前有介绍收集的几个移动平台浏览器的User-Agent,以 ... -
更简洁的方式修改Chrome的User Agent,轻松体验移动版网络
2014-06-28 02:53 6865国庆节在家宅着,使用3g上网卡上网,和在公司上网不一样的是 ... -
3个检测浏览器User-Agent信息的网站
2014-06-28 02:52 2493刚刚在收集各个移动平台浏览器的User-Agent(参见这 ... -
根据移动设备屏幕像素密度,给予不同分辨率的图片
2014-06-26 00:52 2905在出现iphone4之前的相当长的时间内,网站开发人员 ... -
视网膜New iPad与普通分辨率iPad页面的兼容处理
2014-06-26 00:44 1268一、这是篇经验分享 ... -
iOS8开发-Swift编程
2014-06-25 00:45 1824课时列表 章节1:第一个Swift应用 ... -
Swift中文教程(二十三) 高级运算符
2014-06-25 00:43 780除了基本操作符中所讲的运算符,Swift还有许多复杂的高级 ... -
Swift中文教程(二十二) 泛型
2014-06-25 00:35 1001泛型代码可以让你写出根据自我需求定义、适用于任何类型的,灵 ... -
Swift中文教程(二十一) 协议
2014-06-24 05:25 1003Protocol(协议)用于统一方法和属性的名称,而不实现任 ... -
Swift中文教程(二十) 扩展
2014-06-24 00:47 682扩展就是向一个已有的类、结构体或枚举类型添加新功能(fun ... -
Swift中文教程(十九) 类型嵌套
2014-06-24 00:44 883枚举类型常被用于实现特定类或结构体的功能。也能够在有多种变量 ... -
Swift中文教程(十八) 类型检查
2014-06-24 00:41 721类型检查是一种检查类实例的方式,并且或者也是让实例作为它的 ... -
Swift中文教程(十七) 可选链
2014-06-17 05:11 862可选链(Optional Chaining)是一种可以请求 ... -
Swift中文教程(十六) 自动引用计数
2014-06-17 05:05 1241Swift使用自动引用计数(ARC)来管理应用程序的内存使 ... -
Swift中文教程(十五) 析构
2014-06-17 04:57 995在一个类的实例被释放之前,析构函数会被调用。用关键字dei ...
相关推荐
主要介绍了iOS应用开发中UITabBarController标签栏控制器的使用进阶,实例代码为传统的Objective-C,需要的朋友可以参考下
模拟UITabBarController 的父子控制器效果,实现父子控制器管理
SwipeableTabBarController - UITabBarController标签滑动互动
自定义UITabBarController
用UIView仿制标签栏,本质上还是用UIKit的UITabBarController类管理多个View Controller。使用方便灵活,能根据实际情况进行更细致的自定义。
很多时候我们创建一个基于UITabBarController的application以后还希望能够在每个tab view都可以实现导航控制,即添加一个UINavigationController来实现tabview内部的view之间的切换,这即是本文所要介绍的。
自定义的UITabBarController,有一定的封装,调用简单方便
iOS 自定义UINavigationController和UITabBarController
iOS开发UITabBarController和UICollectionView的使用Demo
详细说明了UITabBarViewController的用法,包括使用自定义UITabBar以及使用UITabBarController控件
NULL 博文链接:https://mysuperbaby.iteye.com/blog/1560029
IOS下多标签显示实例,UITabBarController类的使用。
iOS Object-C 自定义封装成 和 UITabBarView一样的功能。主要体现在 UITabBar样式上,可以随意修改 继承UITabBarController 写的 管理切换控制器 主要是写 UITabBar样式是 继承UIView
AZTabBarController AZTabBarController帮助扩展默认UITabBarController的功能,并创建具有自定义外观(带有动画,布局等)的自定义UITabBar项目。 目前仅与Storybo AZTabBarController一起使用AZTabBarController...
OC版本的侧滑控制器 https://github.com/QiaokeZ/OCSlide
ios-dev-resources说明:IOS 开发知识及资源沉淀。一. IOS应用开发知识体系二....- 导航控制器UINavigationBar -- 导航条UINavigationItem -- 导航项,管理显示在导航条上的按钮和视图UITabBarController -- t
一个iOS的app很少只由一个控制器组成,除非这个app极其简单。当app中有多个控制器的时候,我们就需要对这些控制器进行管理 有多个view时,可以用一个大的view去管理1个或者多个小view,控制器也是如此,用1个控制器去...