zoukankan      html  css  js  c++  java
  • iOS开发-UI (十一) UITabBarController

    知识点:

    1.UITabBarController使用

    2.UITabBarItem使用

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

    RDVTabBarController的基本使用 以及tabbar的防止双点击方法

    从tabBarController的一个item上的控制器跳转到另一个item上的控制器

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

    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- UITabBarControllerDelegate
    
    1.//准备开始编辑
    
    -(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];     
    
        }
    
    }
  • 相关阅读:
    TCP通信 小例子
    Socket的简单使用
    Redis练习
    资料
    Redis封装帮助类
    使用Redis的基本操作
    Redis配置主从
    Redis基本设置
    clientHeight ,offsetHeight,style.height,scrollHeight的区别与联系
    服务器操作之如何绑定网站
  • 原文地址:https://www.cnblogs.com/fcug/p/6384106.html
Copyright © 2011-2022 走看看