UITabBarController 标签栏控制器-IOS开发 (实例)

本文详细介绍了如何使用UIKit中的UITabBarController组件构建标签栏控制器,并提供了具体步骤及示例代码,包括创建视图控制器、配置按钮属性、显示控制器等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在 UIKit 中UITabbar 代表了标签栏,而 UITabBarController 对其进行了封装,令多个不同的视图管理与切换变的更加轻松。

构建一个标签栏控制器,首先要为每个按钮准备一个单独的页。每一页都应被创建为UIViewController对象。

 

构建一个控制器数组:

你的应用程序可能有多个不同的试图控制器,来实现不同的功能。如果你在写一个音乐播放器,可能会有一些控制器,如:MusicList、CurrentPlay、Favourite、SingerList、Settings 等。在创建你的标签栏之前,你应该首先创建一个数组,在其中放置你希望在标签栏中显示的视图控制器对象。

C代码 复制代码  收藏代码
  1.  //生成各个视图控制器   
  2.     MusicList* musicList = [[[MusicList alloc]init]autorelease];   
  3.     CurrentPlay* currentPlay = [[[CurrentPlay alloc]init]autorelease];   
  4.     Favourite* favourite = [[[Favourite alloc]init]autorelease];   
  5.     SingerList* singerList = [[[SingerList alloc]init]autorelease];   
  6.     Settings* settings = [[[Settings alloc]initWithStyle:UITableViewStyleGrouped]autorelease];   
  7. //加入一个数组       
  8.     NSArray* controllerArray = [[NSArray alloc]initWithObjects:musicList,currentPlay,favourite,singerList,settings ,nil];  
 

配置按钮属性:

每个标签栏都有他自己的“标签”,定义了他的标签按钮是什么样子。在视图控制器的 init 方法中,可以配置标签栏按钮,定义视图的标题与/或 tabBarItem 属性:

C代码 复制代码  收藏代码
  1. - (id)initWithStyle:(UITableViewStyle)style{   
  2.     self = [super initWithStyle:style];   
  3.     if (self) {   
  4.     self.tabBarItem = [[UITabBarItem alloc]initWithTitle:@"Settings" image:[UIImage imageNamed:@"Setting"] tag:4];   
  5.     }   
  6.     return self;   
  7. }  
 

请将 tabBarItem 属性设置为一个 UITabBarItem 对象。你有两种方法可以初始化标签栏中的项目。一种是initWithTitle 可以让你自定义标题和图像等数据来显示按钮。另一种就是创建系统提供的按钮。后者如下:

C代码 复制代码  收藏代码
  1. - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil   
  2. {   
  3.     self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];   
  4.     if (self) {   
  5.       self.tabBarItem = [[UITabBarItem alloc]initWithTabBarSystemItem:UITabBarSystemItemFavorites tag:2];   
  6.     }   
  7.     return self;   
  8. }  
 

系统提供的按钮如下:

C代码 复制代码  收藏代码
  1. typedef enum {   
  2.     UITabBarSystemItemMore,   
  3.     UITabBarSystemItemFavorites,   
  4.     UITabBarSystemItemFeatured,   
  5.     UITabBarSystemItemTopRated,   
  6.     UITabBarSystemItemRecents,   
  7.     UITabBarSystemItemContacts,   
  8.     UITabBarSystemItemHistory,   
  9.     UITabBarSystemItemBookmarks,   
  10.     UITabBarSystemItemSearch,   
  11.     UITabBarSystemItemDownloads,   
  12.     UITabBarSystemItemMostRecent,   
  13.     UITabBarSystemItemMostViewed,   
  14. } UITabBarSystemItem;  
 

显示标签栏控制器:

标签栏所需的各个控制器都好了,现在就可以生成我们的标签栏控制器了。忘了讲了,控制器我是在

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions  中生成的。

C代码 复制代码  收藏代码
  1. //创建UITabBarController控制器     
  2.     UITabBarController* tabBarController = [[UITabBarController alloc]init];   
  3. //设置UITabBarController控制器的viewControllers属性为我们之前生成的数组controllerArray   
  4.     tabBarController.viewControllers = controllerArray;   
  5. //    默认选择第2个视图选项卡(索引从0开始的)   
  6.     tabBarController.selectedIndex = 1;   
  7. //    把tabBarController的view作为子视图添加到window   
  8.     [self.window addSubview:tabBarController.view];  
 

可定制按钮

默认情况下,当按钮多于5个时,标签栏控制器允许拥护对按钮布局进行定制。要做到这一点,可以单击标有“更多”的标签,然后单击随之出现的导航栏上的编辑按钮。你可以选择只对某些特定的标签进行定制,也可以完全禁止定制。要允许定制,请将标签栏控制器的 customizableViewControllers 设置为一个数组,数组中包含有你希望用户进行定制的试图控制器:

 

导航

当标签栏控制器被显示时,控制器自己处理导航操作,会将选中标签对应视图自动切换到屏幕前端。要读取或者更改当前活动的试图控制器,可以使用 selectedViewController 属性:

C代码 复制代码  收藏代码
  1. tabBarController.selectedViewController = musicList;   
  2.   //读取   
  3.   UIViewController* activeController = tabBarController.selectedViewController;   
  4.   if(activeController == musicList){   
  5.       //   
  6.   }  
 

也可以使用索引:

C代码 复制代码  收藏代码
  1. tabBarController.selectedIndex = 1;  
 

委托代理

要在标签栏上的视图被选中时得到通知,请赋予标签栏控制器一个委托:

C代码 复制代码  收藏代码
  1. tabBarController.delegate = self;  
 

 委托会在选中一个tab时得到通知,然后 didSelectViewController 的委托方法会被调用:

C代码 复制代码  收藏代码
  1. - (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController{   
  2.     /*添加代码,处理定制标签栏结束之后的操作*/  
  3. }  
 

至此结束,最后附上代码工程文件。
UITabBarViewControllerDemo

 

 

来源:http://blog.youkuaiyun.com/iukey/article/details/7318290

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值