UITableViewCell批量选中,全选等功能

最近有朋友评论我写上一篇cell的左滑功能,催我写Cell自定义批量选中,全选功能,我不禁翻看那篇文章,看着写文章的日期,不免有点尴尬,至今已有一年多的时间了,真是往事历历在目啊,然鹅我在努力记起怎么使用markdown,而最后一句话是


Snip20171116_1.png

没想到拖了这么久。
关于UITableViewCell批量选中,全选等功能实现过程很简单,网上方法很多,本不想多此一举重复写着大家都写的方法,但是这篇文章还是要写的,给上一篇文章一个完美的结局。

在编辑模式中多选

// 编辑模式的时候可以多选
self.tableView.allowsMultipleSelectionDuringEditing = YES;

进入全选编辑模式

[self.tableView setEditing:YES animated:YES];

全选事件

//全选
 for (int i = 0; i < 数据.count; i ++) {
            
            NSIndexPath *indexPath = [NSIndexPath indexPathForItem:i inSection:0];
            
            [self.tableView selectRowAtIndexPath:indexPath animated:YES scrollPosition:UITableViewScrollPositionTop];
            
}

//取消全选
for (int i = 0; i < 数据.count; i ++) {
            
    NSIndexPath *indexPath = [NSIndexPath indexPathForItem:i inSection:0];
             [self.tableView deselectRowAtIndexPath:indexPath animated:YES];  
        }
        

获得选中的所有行

self.tableView.indexPathsForSelectedRows;
然后就可以操作删除事件了。。。。。。

关于自定义系统的选中和未选中图像

在自定义cell中

//简单实现

- (void)layoutSubviews {
    [super layoutSubviews];
    for (UIControl *control in self.subviews){
        if ([control isMemberOfClass:NSClassFromString(@"UITableViewCellEditControl")]){
            for (UIView *v in control.subviews){
                if ([v isKindOfClass: [UIImageView class]]) {
                    UIImageView *img=(UIImageView *)v;
                    if (self.selected) {
                        img.image=选中的图片;
                    }else{
                        img.image=未选中的图片;
                    }
                }
            }
        }
    }
}

搞定,是不是很简单,惊不惊喜,意不意外。

你可能感兴趣的:(UITableViewCell批量选中,全选等功能)