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