美文网首页iOS专题程序员iOS Developer
UITableView(七)数据的批量删除

UITableView(七)数据的批量删除

作者: 飞翔的道长 | 来源:发表于2016-05-04 14:47 被阅读395次

    前情提要!

    UITableView(六)数据更新(增、删、改)

    在开发中对于批量删除这种需求还是挺常见的,本文介绍的实现方式为两种,一种是iOS提供的,另一种为自定义方式。区别是iOS提供的可定制性太差,自定义的可以按需求自己做。

    • 第一种:利用iOS提供的批量处理数据的方法删除。

      • 1.在viewDidLoad方法中设置tableView的属性allowsMultipleSelectionDuringEditing为YES
       // 允许在编辑模式进行多选操作
       self.tableView.allowsMultipleSelectionDuringEditing = YES;
      
      • 2.给编辑按钮添加点击事件,之后实现代码如下
          // 设置tableView是否进入编辑模式
      [self.tableView setEditing:!self.tableView.isEditing animated:YES];
       self.tableView.allowsMultipleSelectionDuringEditing = YES;
      
      • 3.给删除按钮添加点击事件,之后实现代码如下
      // 批量删除 - 系统提供
      // 取出所选行
      NSArray *indexPaths = [self.tableView indexPathsForSelectedRows];
      
      // 存放要删除的数据
      NSMutableArray *delete = [NSMutableArray array];
      
      // 在原有数据中取出数据
      for (NSIndexPath *item in indexPaths) {
          [delete addObject:self.list[item.row]];
      }
      
      // 删除数据
      [self.list removeObjectsInArray:delete];
      
      // 刷新
      [self.tableView reloadData];
      
      • 效果


    • 第二种:自己实现批量删除。思路为在模型中添加属性标识该行是否被选中,如选中就删除。

      • 1.布局文件中添加一个图片控件用于标识是否被选中。如下图中的绿色对号。


      • 2.把刚添加的图片控件关联到UITableViewCell的扩展类中,并在模型类中添加属性标识是否被选中。
      // 对是否选中取反,没有被选中的话就隐藏图片控件,check属性是是否选中标识
      self.check.hidden = !data.IsCheck;
      
      • 3.实现UITableView的didSelectRowAtIndexPath方法
      -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
          WXData *data = self.list[indexPath.row];
          data.check = !data.IsCheck;
      
          [tableView reloadData];
      

    }
    - 4.给删除按钮添加点击事件,之后实现代码如下objc
    // 批量删除 - 自定义

      // 存放要删除的数据
      NSMutableArray *delete = [NSMutableArray array];
    
      for (WXData *item in self.list) {
          if(item.IsCheck)
          {
              [delete addObject:item];
          }
      }
    
      // 删除数据
      [self.list removeObjectsInArray:delete];
    
      // 刷新
      [self.tableView reloadData];
      ```
    - 效果
    

    相关文章

      网友评论

        本文标题:UITableView(七)数据的批量删除

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