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;

    }

  • 相关阅读:
    用struct定义函数
    三、OCTAVE画图
    二、OCTAVE 移动数据
    SQL复习
    Flink处理迟到的数据
    LeetCode题目学习
    CentOS7安装pycharm
    IntelliJ IDEA 刷题利器 LeetCode 插件
    Redis命令学习
    项目杂记
  • 原文地址:https://www.cnblogs.com/yyj900165/p/5175254.html
Copyright © 2011-2022 走看看