首页 > 移动平台 > 详细

iOS 顺传

时间:2016-02-01 17:42:00      阅读:243      评论:0      收藏:0      [点我收藏+]

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;

}

iOS 顺传

原文:http://www.cnblogs.com/yyj900165/p/5175254.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!