#import "UIButton+Block.h"

@implementation UIButton (Block)

static char overviewKey;

static char buttonType;

@dynamic event;

@dynamic Type;

- (void)setType:(NSString *)Type {

objc_setAssociatedObject(self, &buttonType, Type, OBJC_ASSOCIATION_COPY_NONATOMIC);

}

- (NSString *)Type {

NSString *Type = objc_getAssociatedObject(self, &buttonType);

return Type;

}

- (void)handleControlEvent:(UIControlEvents)event withBlock:(ActionBlock)block {

if (block) {

objc_removeAssociatedObjects(self); // 移除这个对象(button)的所有关联对象

objc_setAssociatedObject(self, &overviewKey, block, OBJC_ASSOCIATION_COPY_NONATOMIC);//设置

[self addTarget:self action:@selector(callActionBlock:) forControlEvents:event];

}

}

- (void)callActionBlock:(id)sender {  // 获取关联对象

ActionBlock block = (ActionBlock)objc_getAssociatedObject(self, &overviewKey);

if (block) {

block();

}

}

@end

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐