iOS cell中多个点击事件的完美解决方案

经常会在在tableviewcell 中有多个事件的需求,删除,跳转,添加等等其他或者更加复杂的操作。
解决方案也很多,block ,代理都是很好的解决方案。
但是效率呢,
每个点击事件一个blcok 参数自定义,
每个点击事件一个delegate 参数自定义,但是点击位置indexpath 确定需要判断。
好烦,我不想写啊。每个tableviewcell 都要来一遭,需求更换又要来一遭,生不如死啊。
我不要啊。
来吧,这个完美的解决方案:
上代码:

@protocol TargetActionProtocol <NSObject>
- (void)addBaseTarget:(id)target action:(SEL)action withObject:(id)object;
@end

#import "TargetView.h"
@interface TargetView()
@property(nonatomic,strong) id target;
@property(nonatomic,assign) SEL action;
@property(nonatomic,strong) id object;

@end
@implementation TargetView



- (void)addBaseTarget:(id)target action:(SEL)action withObject:(id)object{
    
    
    self.target = target;
    self.action = action;
    self.object = object;

    
    
    
    
    
}
- (void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
    
    
    NSMethodSignature *signature = [self.target methodSignatureForSelector:self.action];
    //从签名获得调用对象
    NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:signature];
    //设置target
    [invocation setTarget:self.target];
    //设置selector
    [invocation setSelector:self.action];
    
    //注意:设置参数的索引时不能从0开始,因为0已经被self占用,1已经被_cmd占用
    
    if (self.object) {
        id object = self.object;
        [invocation setArgument:&object atIndex:2];
    }
    //接收返回的值
    [invocation invoke];
    
    
}

@end

看完代码,大家应该就明白了。
addTarget:(id)target action:(SEL)action withObject:(id)object
这样的形式很多地方也有用,放在这里再好不过了
写在BaseTableViewCell里面,想用就用,完美解耦,厉害了。
利用OC sendMsg的机制,给某个类发送消息的方式。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 14,042评论 6 13
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,523评论 25 709
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,178评论 19 139
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,420评论 30 472
  • 对照自我检讨之第四天 好的方面 1、所有事情都按计划。 2、由于要帮助别的部门工作,家人让看电影没去。 不足之处:...
    文H阅读 4,440评论 26 16

友情链接更多精彩内容