博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS开发-UI (十一) UITabBarController
阅读量:5046 次
发布时间:2019-06-12

本文共 4377 字,大约阅读时间需要 14 分钟。

知识点:

1.UITabBarController使用

2.UITabBarItem使用

 

关于TabBarController除了本次整理的内容,有兴趣的可以看下我以前发过的这两篇,在实际开发中很实用的东西.

 

=======================

UITabBarController

    1.创建方式

    2.如何把一个UIViewController加入到UITabBarController

    3.如何把一个UINavigationController加入到UITabBarController

    4.如何记住点击顺序

    5.设置和获取选中项

@property(nonatomic) NSUInteger selectedIndex;

 

=======================

UITabBarItem

 

    1.UITabBarItem和UITabBarController关系

tabBarItem是UIViewController的一个属性

这个属性是为UITabBarController服务的

    2.创建文字和图片的UITabBarItem 

      - (id)initWithTitle:(NSString *)title 

      image:(UIImage *)image 

tag:(NSInteger)tag;

 

-(instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil{        if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) {//设置文字带图片类型的self.tabBarItem = [[UITabBarItem alloc] initWithTitle:@"红色" image:[UIImage imageNamed:@"1_selected"] tag:0]; //设置文字,选中图片和非选中图片类型     // self.tabBarItem = [[UITabBarItem alloc] initWithTitle:@"红色" image:[UIImage imageNamed:@"3_normal"] selectedImage:[UIImage imageNamed:@"3_selected"]];}

 

 

注意:ios7后添加的函数

- (instancetype)initWithTitle:(NSString *)title 

image:(UIImage *)image 

selectedImage:(UIImage *)selectedImage

 

    3.创建系统自带的UITabBarSystemItem

- (id)initWithTabBarSystemItem:(UITabBarSystemItem)systemItem 

  tag:(NSInteger)tag;

 

//设置系统类型self.tabBarItem = [[UITabBarItem alloc] initWithTabBarSystemItem:UITabBarSystemItemTopRated tag:0];

 

 

    4.设置UITabBarItem徽标

      @property(nonatomic,copy) NSString *badgeValue

    

//设置徽标self.tabBarItem.badgeValue = [NSString stringWithFormat:@"%ld",10L];

 

 

=======================

UITabBarController使用注意

    1.UITabBarController数量限制

      1)tabBarController中最多只允许显示5个试图控制器

超出的系统会自动添加一个more

    2.UITabBarController编辑

用户可以随意设置每个控制的显示的位置

 

=======================

UITabBarController顺序

    1.记录用户最后一次点击的viewController

      1)NSUserDefaults作用

NSUserDefaults对象是用来保存,恢复应用程序相关的偏好设置,配置数据等等

      2)NSUserDefaults创建

  + (NSUserDefaults *)standardUserDefaults

      3)存储数据

- (void)set[数据类型]:(数据类型)value forKey:(NSString *)defaultName;

      4)同步数据

- (BOOL)synchronize;

      5)读取数据

- (数据类型)[数据类型]ForKey:(NSString *)defaultName;

 

    2.UITabBarControllerDelegate使用

      1)被选中的时候

    - (void)tabBarController:(UITabBarController *)tabBarController 

      didSelectViewController:(UIViewController *)viewController

#pragma mark- UITabBarControllerDelegate//已经选择某一个控制器-(void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController{     NSLog(@"当前处于选中状态的控制器下标为%ld",tabBarController.selectedIndex);    //记录    NSUserDefaults *def = [NSUserDefaults standardUserDefaults];    [def setInteger:tabBarController.selectedIndex forKey:@"index"];    //同步到本地    [def synchronize];}

 

 

      2)控制TabBarItem能不能选中

    - (BOOL)tabBarController:(UITabBarController *)tabBarController 

      shouldSelectViewController:(UIViewController *)viewController;

//准备选择某一个控制器(是否能选中该控制器)-(BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController{    //viewController 待会选中的控制器对象    //tabBarController 当前管理的分栏控制器    //NSLog(@"当前处于选中状态的控制器下标为%ld",tabBarController.selectedIndex);    /*错误写法:不允许选中第一个控制器    if (tabBarController.selectedIndex == 0) {        return NO;    }     */    if (viewController == tabBarController.viewControllers[0]) {        return NO;    }    //返回YES,可以选中,返回NO,不允许选中    return YES;}

 

 

      3)下面这三个方法主要用于监测对moreViewController中对view controller的edit操作

   

#pragma mark- UITabBarControllerDelegate1.//准备开始编辑-(void)tabBarController:(UITabBarController *)tabBarController willBeginCustomizingViewControllers:(NSArray *)viewControllers{        NSLog(@"willBeginCustomizingViewControllers");}2.//准备结束编辑-(void)tabBarController:(UITabBarController *)tabBarController willEndCustomizingViewControllers:(NSArray *)viewControllers changed:(BOOL)changed{         NSLog(@"willEndCustomizingViewControllers");} 3.//已经结束编辑-(void)tabBarController:(UITabBarController *)tabBarController didEndCustomizingViewControllers:(NSArray *)viewControllers changed:(BOOL)changed{        //判断是否改变了顺序    if (changed) {                //记录标题顺序        NSMutableArray *newArr = [NSMutableArray new];                for (UIViewController *ctl in viewControllers) {                        [newArr addObject:ctl.title];                }            //保存到本地        NSUserDefaults *def = [NSUserDefaults standardUserDefaults];        [def setObject:newArr forKey:@"saveArr"];        [def synchronize];         }}

 

转载于:https://www.cnblogs.com/fcug/p/6384106.html

你可能感兴趣的文章
CSS清除浮动方法
查看>>
JVM内存回收机制简述
查看>>
洛咕 P2480 [SDOI2010]古代猪文
查看>>
js-创建对象的几种方式
查看>>
JDK JRE Java虚拟机的关系
查看>>
2018.11.20
查看>>
word20161215
查看>>
12th week blog
查看>>
dijkstra (模板)
查看>>
python小记(3)
查看>>
编译Linux驱动程序 遇到的问题
查看>>
大型分布式网站架构技术总结
查看>>
HDU 1017[A Mathematical Curiosity]暴力,格式
查看>>
[算法之美] KMP算法的直观理解
查看>>
EntityFramework 性能优化
查看>>
【ASP.NET开发】菜鸟时期的ADO.NET使用笔记
查看>>
android圆角View实现及不同版本号这间的兼容
查看>>
OA项目设计的能力③
查看>>
Cocos2d-x3.0 文件处理
查看>>
全面整理的C++面试题
查看>>