UITableView实现选中一行或者多行

需要一个确定按钮,可以设置为NavigationController的左按钮,这是确定按钮实现的方法  因为如果多选或者全选删除的时候,需要先拿到选中的所有行数 所以会是一个数组。

    // 拿到现在是选择状态的数组
    NSArray * arr = self.tableView.indexPathsForSelectedRows;
    
    // 此处从数组删除  注意:按照arr 顺序删除会崩溃
    NSMutableIndexSet * set = [NSMutableIndexSet indexSet];
    for (NSIndexPath * indexP in arr) {
        [set addIndex:indexP.row];
    }
    
    [self.dataArr removeObjectsAtIndexes:set];
    
    [self.tableView deleteRowsAtIndexPaths:arr withRowAnimation:UITableViewRowAnimationAutomatic];
    
    NSLog(@"seleteArr = %@",arr);

设置一个全选按钮 内部实现将所有行数全选

    NSArray * array = [self.tableView indexPathsForRowsInRect:CGRectMake(0, 0, self.view.frame.size.width, self.tableView.contentSize.height)];
    
    [array enumerateObjectsUsingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
       
        [self.tableView selectRowAtIndexPath:obj animated:YES scrollPosition:UITableViewScrollPositionNone];
    }];

然后还需要实现一个TableViewController的选中行数进行操作的方法

- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath{

    if (self.tableView.editing) {
        
        // 实现编辑状态下多选
        return UITableViewCellEditingStyleInsert | UITableViewCellEditingStyleDelete;
    }else {
        
        // 普通状态下左滑删除
        return UITableViewCellEditingStyleDelete;
    }
}

最后就是TableViewController自身的删除方法了

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
    if (editingStyle == UITableViewCellEditingStyleDelete) {
        // Delete the row from the data source
        
        // 先删数组
        [self.dataArr removeObjectAtIndex:indexPath.row];
        
        [self.tableView beginUpdates];
        
        // 再删UI
        [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
        
        [self.tableView endUpdates];
        
    } else if (editingStyle == UITableViewCellEditingStyleInsert) {
        // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view
    }   
}


转载于:https://my.oschina.net/179411601/blog/547749

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值