IOS--UI--LessonUITabBarController 标签控制器

UITabBarController和UINavigationController类似,UITabBarController也可以轻松地管理多个控制器,轻松完成控制器之间的切换,典型的例子就是QQ、微信等应⽤。
/*
1.TabBar 在下面 TableBar 在上面
2. UITabBarController (标签视图控制器),多视图控制器 ,管理具有并列关系的视图 这些视图 同时存在 视图之间关联不大,一旦标签控制器超出管理界面五个 就会自动将最后一个标签 换成 More 剩余的标签就在 more里面展示

3.UITabBarController 管理的视图控制器,只在初次显示创建一次,之后就不再创建,其管理的视图控制器并列存在

*/

一 基本配置
我们来建工程 因为标签栏控制的是不同的独立页面 我们要建立三个界面把 好区别
1.cmd+n 继承 UIViewController

#import "FirstViewController.h"
#import "SecondViewController.h"
#import "ThirdViewController.h"

2.为了防止再切换页面的时候卡顿 我们在每个页面的 .m 的viewDidLoad 里面 设置颜色

- (void)viewDidLoad {
    [super viewDidLoad];
    NSLog(@"%s",__FUNCTION__);
    self.view.backgroundColor =[UIColor colorWithRed:250/255.0 green:128/255.0 blue:114/255.0 alpha:1];
    // Do any additional setup after loading the view.
}

注:大家可以看到我的颜色 UIColor 后面跟的不是一个固定的颜色 而是 RGB 值 系统提供的颜色实在是太少了 又不好看 所有希望调出自己的颜色 就可以用 RGB 来设置
颜色 RGB 值

3.在AppDelegate 里面创建对象

#import "AppDelegate.h"
#import "FirstViewController.h"
#import "SecondViewController.h"
#import "ThirdViewController.h"



@interface AppDelegate ()<UITabBarControllerDelegate>

@end

@implementation AppDelegate
- (void)dealloc
{
    [_window release];
    [super dealloc];
}

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]autorelease];
    // Override point for customization after application launch.
    self.window.backgroundColor = [UIColor whiteColor];
    [self.window makeKeyAndVisible];

    //创建单视图控制对象

//First

    //创建对象
    FirstViewController *firstVC=[[FirstViewController alloc]init];
    //配置 title
    firstVC.tabBarItem .title =@"First";
    //配置图标
    firstVC.tabBarItem.image =[UIImage imageNamed:@"29-heart"];
    //配置角标
    firstVC .tabBarItem.badgeValue = @"99+";
   // 配置唯一标示符
    firstVC.tabBarItem.tag =100;




//Second

    //创建对象
    SecondViewController *secondVC=[[SecondViewController alloc]init];
    //配置 title
    secondVC .tabBarItem.title =@"Second";
    //配置图标
    secondVC .tabBarItem.image =[UIImage imageNamed:@"65-note"];
    //配置角标
    secondVC.tabBarItem.badgeValue = @"播放";
   // 配置唯一标示符
    secondVC.tabBarItem.tag = 101;





//Third

    //创建对象
    ThirdViewController *thirdVC= [[ThirdViewController alloc]init];
    //配置 title
    thirdVC.tabBarItem .title =@"Third";
    //配置图标
    thirdVC.tabBarItem.image =[UIImage imageNamed:@"61-brightness"];

  1. 创建 UITabBarController 对象 并对其赋值

    //创建标签视图控制器
    UITabBarController *tabBarVC= [[UITabBarController alloc]init];

    //1.配置所管理的多个视图控制器  控制在标签中的位置 你在这里的排序 就是在模拟器中的位置
    NSArray *controllers =@[firstVC,secondVC,fourthVC,thirdVC,fifthVC,sixVC];

    //2.将多个视图控制器 赋值给标签视图控制器
    tabBarVC .viewControllers =controllers;

    //3.配置标签栏的颜色 
    tabBarVC.tabBar.barTintColor =[UIColor colorWithRed:225/255.0 green:250/255.0 blue:240/255.0 alpha:1];

    //4.选中时的颜色 也就是 button 的颜色
    tabBarVC.tabBar.tintColor =[UIColor colorWithRed:160/255.0 green:102/255.0 blue:211/255.0 alpha:1];

    //5.配置标签栏的图片
    tabBarVC.tabBar.backgroundImage =[UIImage imageNamed:@"tabbar_mainframe@2x"];

    //6.配置默认选中的标签  下面两种方法 都可以达到默认的目的
//    6.1> 以下标选中默认标签
    tabBarVC.selectedIndex =2;
//    6.2>以视图控制器为选中默认标签
    tabBarVC.selectedViewController = thirdVC;

    //7.配置代理属性
    tabBarVC.delegate =self;


    // 控制他们还需要将标签视图控制器指定为根视图控制器 特别关键的一步 如果不设为根视图控制器 你上面写的一切都不会受标签栏操作
    self .window .rootViewController =tabBarVC;

    [firstVC release];
    [secondVC release];
    [thirdVC release];
    [fourthVC release];
    [fifthVC release];
    [sixVC release];
    [tabBarVC release];

二 UITabBarItem
 UITabBar上面显示的每一个Tab都对应着一个ViewController,我们可以通过设置viewcontroller.tabBarItem属性来改变tabbar上对应的tab显示内容
 

//举得栗子  
   mineNC.tabBarItem.image =[UIImage imageNamed:@"tabbar_me@2x"];
   findNC.tabBarItem.image =[UIImage imageNamed:@"tabbar_discover@2x"];

//@"" 里面 是我们导入的图标 名字  标签栏 里面大部分用图标来代替文字 大家可以找一些自己喜欢的图片 使用在这里面

三 More
在最上面的定义中 提到了一旦标签控制器超出管理界面五个 就会自动将最后一个标签 换成 More 剩余的标签就在 more里面展示
就是这个样子

四 对选中的标签进行操作

//   这两个代理方法 所以我们上面才会有设置属性
//当选中标签是触发,询问该标签是否可以被选中
- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController NS_AVAILABLE_IOS(3_0){
    if(viewController.tabBarItem.tag == 101){
       return NO;
    }
    return YES;
}
//选中标签时触发的方法
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController{

    //1. 选中标签时去掉标签角标 ,选中哪一个去掉哪一个
    viewController.tabBarItem.badgeValue = 0;

}
// 这里的 badgeValue 就像是我们微信积攒了一天的消息不去看 上面的小提示
![这里写图片描述](http://img.blog.csdn.net/20150717200529870)
//我们通过选中标签的触发方法 来消除这个 badgeValue  

总结:
标签控制栏是我们三大视图控制器 之一 以后会经常用到 里面的内容 需要大家记忆

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值