iOS开发--Block传递按钮点击事件

作者: 爱吃鱼的小灰 | 来源:发表于2016-11-16 16:07 被阅读3418次
  • 按钮的点击事件传递可以用代理,通知,但是这些都比较繁琐,而Block写起来比较清爽下面我们以UITableViewCell中定制cell为例演示如何将cell上的按钮点击事件传递给控制器
  • 首先是在定制的cell的.h文件中的代码示例:
// 用typef宏定义来减少冗余代码
typedef void(^ButtonClick)(UIButton * sender);// 这里的index是参数,我传递的是button的tag值,当然你可以自己决定传递什么参数
//下一步就是声明属性了,注意block的声明属性修饰要用copy
@property (nonatomic,copy) ButtonClick buttonAction;

到此.h文件大致就是这了

  • 那么再来看下cell的.m文件内容:
  - (void)buttonClick:(UIButton *)button{
// 判断下这个block在控制其中有没有被实现
    if (self.buttonAction) {
// 调用block传入参数
        self.buttonAction(button);
    }
}
  • 接下来我们来看控制器中的实现代码:
// 在创建cell的时候
  - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    JHTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:@"cellId"];
    if (cell == nil) {
        cell = [[JHTableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cellId"];
    }
// 就在这里cell初始化成功后去给Block赋值调用它的setter方法
    cell.buttonAction = ^(UIButton *sender){
         [self cellButtonClick:sender];// 在Block内部去调用一个方法,当然你也可以直接在这里写,只要你不嫌代码臃肿
    };
    return cell;
}
// 将方法抽出来放在外边看起来不至于让tableView的代理方法太臃肿
  - (void) cellButtonClick:(UIButton *)button
{
// 这里就可以实现点击后的后续操作了
}

相关文章

  • iOS开发--Block传递按钮点击事件

    按钮的点击事件传递可以用代理,通知,但是这些都比较繁琐,而Block写起来比较清爽下面我们以UITableView...

  • iOS事件传递问题

    今天在实际开发中遇到一些问题,就是需要一个按钮的点击事件区域是按钮的一部分区域,这就需要知道iOS的事件传递机制和...

  • React Native 函数回调

    子组件传递事件到父组件 碰到一个需求是:在子组件中点击按钮,需要将点击事件传递到父组件中,这个需求在iOS中可以很...

  • iOS开发中的坑

    1.UICollectionView中的Cell 有一个删除的按钮 ,按钮的点击事件是block,block的赋值...

  • 用block将视图中的点击事件写出去

    第一步,加入这个宏 第二步,设置按钮的点击事件属性block 第三步,在按钮的点击事件中和block属性关联 第四...

  • iOS 响应链

    iOS开发 - 事件传递响应链iOS 响应者链,事件的传递事件传递之响应链Cocoa Touch事件处理流程--响...

  • 【code_hyy_基础】事件传递链/事件响应链

    一.事件传递链 当点击一个按钮的时候,事件如果传递到按钮这个第一响应者上,这就是事件传递链要做的事情。系统根据下面...

  • iOS开发中获取短信验证码倒计时按钮的实现

    按钮的点击事件中实现下面代码-(void)startTime{ __block int timeout=59...

  • iOS 事件传递与响应链

    问题 1. iOS点击事件怎么传递到被点击的view的 如下图,点击蓝色view,点击事件是如何传递并最终确认被点...

  • 按钮

    iOS开发禁用多个按钮同时点击导致误触

网友评论

    本文标题:iOS开发--Block传递按钮点击事件

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