快速实现可自定义的tableView滑动删除功能

TableView 是自带滑动删除这个功能,但是有时候并不能满足我们的需求。例如,需求要求删除的那个按钮可自定义,这时候系统的功能就嗝屁了...

当然,现在好用的轮子那么多,相信肯定有能满足你要求的。今天,我来教大家怎么保持系统的滑动删除功能不变,又可以随意的自定义删除按钮,快捷方便!

废话不多说,先上图:


delete.gif
  • 开启TableView 的滑动删除功能
    -(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
    {
       NSLog(@"BtnClick_%zd",indexPath.row);
    }
  • 自定义一个 UITableViewCell
    实现如下方法:

    - (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
    {
      self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
      if (self) {
      UIView *deleteBgView = [UIView new];
      deleteBgView.backgroundColor = [UIColor brownColor];
      [self.contentView addSubview:deleteBgView];
    
      UIButton *deleteBtn = [UIButton new];
      //deleteBtn.backgroundColor = [UIColor yellowColor];
      [deleteBtn setImage:[UIImage imageNamed:@"delete"] forState:UIControlStateNormal];
      [deleteBgView addSubview:deleteBtn];
    
      [deleteBgView mas_makeConstraints:^(MASConstraintMaker *make) {
          make.left.offset([UIScreen mainScreen].bounds.size.width);
          make.top.equalTo(self.contentView);
          make.bottom.equalTo(self.contentView).offset(1);
          make.width.equalTo(self.contentView);
      }];
    
      [deleteBtn mas_makeConstraints:^(MASConstraintMaker *make) {
          make.width.offset(80);
          make.top.equalTo(deleteBgView);
          make.bottom.equalTo(deleteBgView);
          make.left.equalTo(deleteBgView);
      }];
      }
      return self;
    }
  • 这里我用了 Masonry 来做布局约束,相信大家一定不陌生,到这里基本完成了,iOS7,8,9 亲测无误,轻松愉快!


注: 这种做法只适用于一个按钮的情况,多个按钮的情况因为无法触发按钮的点击事件,所以无从下手,研究出来的小伙伴,望告知!

原文地址:https://www.cnblogs.com/duyuiOS/p/5844903.html