美文网首页
UIButton的点击事件使用block回调

UIButton的点击事件使用block回调

作者: 西门丨不吹雪 | 来源:发表于2017-02-22 22:09 被阅读63次

    直接上代码

    .h文件
    #import <UIKit/UIKit.h>
    typedef void (^btnBlock)();

    @interfce UIButton (Block)
    
    - (void)handelWithBlock:(btnBlock)block;
    
    @end
    

    .m文件

    #import "UIButton+Block.h"
    #import <objc/runtime.h>
    
    static const char btnKey;
    
    @implementation UIButton (Block)
    
    - (void)handelWithBlock:(btnBlock)block
    {
        if (block)
        {
           set方法将self和block通过btnkey关联起来
            objc_setAssociatedObject(self, &btnKey, block, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
        }
    
        [self addTarget:self action:@selector(btnAction) forControlEvents:UIControlEventTouchUpInside];
    }
    
    - (void)btnAction
    {
         get方法通过key获取对象
        btnBlock block = objc_getAssociatedObject(self, &btnKey);
        block();
    }
    
    @end
    

    tips: 使用objc_setAssociatedObject,需要引入头文件 #import <objc/runtime.h>

    相关文章

      网友评论

          本文标题:UIButton的点击事件使用block回调

          本文链接:https://www.haomeiwen.com/subject/kkqvwttx.html