zoukankan      html  css  js  c++  java
  • iOS 顺传

    ios 顺传一层的话,直接用属性 改变里面的值

    顺传穿两到三层的话 使用KVO

    // 设置item

    - (void)setItem:(UITabBarItem *)item

    {

        _item = item;

        

        // KVO 监听属性改变

        [item addObserver:self forKeyPath:@"badgeValue" options:0 context:nil];

        [item addObserver:self forKeyPath:@"title" options:0 context:nil];

        [item addObserver:self forKeyPath:@"image" options:0 context:nil];

        [item addObserver:self forKeyPath:@"selectedImage" options:0 context:nil];

        

        [self observeValueForKeyPath:nil ofObject:nil change:nil context:nil];

    }

    - (void)dealloc

    {

        [self.item removeObserver:self forKeyPath:@"badgeValue"];

        [self.item removeObserver:self forKeyPath:@"title"];

        [self.item removeObserver:self forKeyPath:@"image"];

        [self.item removeObserver:self forKeyPath:@"selectedImage"];

    }

    /**

     *  监听到某个对象的属性改变了,就会调用

     *

     *  @param keyPath 属性名

     *  @param object  哪个对象的属性被改变

     *  @param change  属性发生的改变

     */

    - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context

    {

        // 设置文字

        [self setTitle:self.item.title forState:UIControlStateSelected];

        [self setTitle:self.item.title forState:UIControlStateNormal];

        

        // 设置图片

        [self setImage:self.item.image forState:UIControlStateNormal];

        [self setImage:self.item.selectedImage forState:UIControlStateSelected];

        

        // 设置提醒数字

        self.badgeButton.badgeValue = self.item.badgeValue;

        

        // 设置提醒数字的位置

        CGFloat badgeY = 5;

        CGFloat badgeX = self.frame.size.width - self.badgeButton.frame.size.width - 10;

        CGRect badgeF = self.badgeButton.frame;

        badgeF.origin.x = badgeX;

        badgeF.origin.y = badgeY;

        self.badgeButton.frame = badgeF;

    }

  • 相关阅读:
    教你一招用 IDE 编程提升效率的骚操作!
    动态拼接sql语句工具类
    mysql数据建模规范
    分割字符串为数字列表
    linux 配置mysql odbc
    nodejs npm常用命令
    (四)jquery easyui panel window使用
    (三)jquery easyui常用form控件的使用
    (二)jquery easyUI提示框的使用
    (一)jQuery easyUI 环境的搭建
  • 原文地址:https://www.cnblogs.com/yyj900165/p/5175254.html
Copyright © 2011-2022 走看看