UITabBarController 标签栏控制器-IOS开发
来源:互联网 发布:淘宝nike官方旗舰店 编辑:程序博客网 时间:2024/06/05 18:19
在 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://m.blog.csdn.net/blog/iukey/7318290
- UITabBarController 标签栏控制器-IOS开发
- UITabBarController 标签栏控制器-IOS开发
- UITabBarController 标签栏控制器-IOS开发
- UITabBarController 标签栏控制器-IOS开发
- UITabBarController 标签栏控制器-IOS开发
- UITabBarController 标签栏控制器-IOS开发 (实例)
- UITabBarController 标签栏控制器-IOS开发 (实例)
- iOS开发-------UITabBarController(标签控制器)
- iOS开发--标签视图控制器--UITabBarController
- iOS开发:标签视图控制器(UITabBarController)
- iOS编程------标签视图控制器-UITabBarController
- UITabBarController 标签栏控制器
- UITabBarController标签栏控制器
- UITabBarController 标签栏控制器
- iOS开发中 UITabBarController--标签控制器的使用
- Swift UITabBarController 标签栏控制器
- swift UITabBarController标签栏控制器
- UITabBarController(标签栏控制器)
- MPMoviePlayerController 电影播放器—IOS开发
- 第十一周项目4 - 类族的设计
- 第九周 项目四
- CSS自动加序号-多种有序列表数字序号效果
- win下ADS和linux下命令行Makefile开发
- UITabBarController 标签栏控制器-IOS开发
- VMware Workstation(虚拟机)桥接Bridge网络设置
- 【c】用malloc判断一个程序允许运行空间大小
- 利用word分词来计算文本相似度
- 微信企业号增加通讯录用户组时 错误 errcode 60011
- C++数据结构 顺序表的实现(模板类的实现)
- sqlite 实例教程 IOS下用sqlite打造词典-IOS开发
- 2015百度之星资格赛——1001 大搬家
- 第十二周项目四 点、圆的关系-(1)判断点与圆的位置关系