给UIBarButtonItem增加isSelect属性

最近一个需求类似淘宝的购物车编辑按钮,这个按钮在nav上,点击之后文字变为完成,再次点击变回编辑,当然我们使用自定义的button可以搞定,但是如果我们坚持使用系统的UIBarButtonItem呢,我们需要一个Bool属性来标识这个控件是否在选中状态,就是我们使用button那样,当然有很多解决方案,今天我们说一个使用category解决一下

针对UIBarButtonItem新建一个category文件

.h代码

#import 
#import 

@interface UIBarButtonItem (Extension)

/**
 对barbuttonitem增加是否选中属性
 */

@property(nonatomic, assign, getter=isMySelect) BOOL mySelect;

@end

.m代码

#import "UIBarButtonItem+Extension.h"

@implementation UIBarButtonItem (Extension)

-(void)setMySelect:(BOOL)mySelect {
    //因为这里需要一个id类型的value,所以我转成了number类型
    objc_setAssociatedObject(self, @selector(isMySelect), [NSNumber numberWithBool:mySelect], OBJC_ASSOCIATION_COPY_NONATOMIC);
}

-(BOOL)isMySelect {
     //因为在set方法中转成了number类型,所以这里需要转成Bool类型
    return [objc_getAssociatedObject(self, @selector(isMySelect)) boolValue];
}

@end

你可能感兴趣的:(给UIBarButtonItem增加isSelect属性)