美文网首页A知识点
UITableView系统自带多选效果

UITableView系统自带多选效果

作者: 姜流儿96 | 来源:发表于2017-07-26 17:14 被阅读513次

最近有列表多选删除的需求,以前一直是自己实现这种效果,这次该用一下系统自带的,也算是狠狠的踩了一把坑。记录一下,提醒自己,也希望能帮助偶然来到的朋友。

1、一般只需要两句话就能进入TableView的编辑模式下的多选模式

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

这样就进入了多选模式了,但是一定要注意,如果是自定义的cell的话,一定要在cell的实现文件里面加上这句话,很坑,坑了半天。。。

self.selectionStyle = UITableViewCellSelectionStyleDefault;

之后选中的cell背景会变成默认的蓝色,修改方法:在- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath方法中添加

cell.selectedBackgroundView = [[UIView alloc] initWithFrame:cell.frame];
    cell.selectedBackgroundView.backgroundColor = [UIColor clearColor];

2、一般的需求都会定制前面对勾的样式,同样的也在这记录一下。在cell的实现文件里面重写两个方法:

-(void)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=[UIImage imageNamed:@"loginclickboxbg2.png"];
                    }else
                    {
                        img.image=[UIImage imageNamed:@"loginclickboxbg1.png"];
                    }
                }
            }
        }
    }
    [super layoutSubviews];
}


//适配第一次图片为空的情况
- (void)setEditing:(BOOL)editing animated:(BOOL)animated
{
    [super setEditing:editing animated:animated];
    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=[UIImage imageNamed:@"loginclickboxbg1.png"];
                    }
                }
            }
        }
    }
    
}

相关文章

网友评论

    本文标题:UITableView系统自带多选效果

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