UITableView多选时修改选中按钮的图片或者颜色

1.

        // 在编辑状态下允许多选
        _tableView.allowsMultipleSelectionDuringEditing = YES;

2. 

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    // 编辑模式下不允许点击进入详情
    if (tableView.isEditing) {
        // 去掉选中时的cell背景颜色
        InspectorListCell *cell = [tableView cellForRowAtIndexPath:indexPath];
        cell.selectedBackgroundView = [UIView new];
        return;
    }
    
    // 不是编辑模式下才允许进入详情页面
    [tableView deselectRowAtIndexPath:indexPath animated:YES];
}

3. 

    // 按钮点击回调
    _adapter.buttonClickHandle = ^(NSInteger tag) {
        if (tag == 100) {
            // 点击编辑按钮时, 设置TableView为编辑状态
            [weakSelf.tableView setEditing:!weakSelf.tableView.isEditing animated:NO];
            weakSelf.adapter.isEditing = weakSelf.tableView.editing;
        } else if (tag == 200) {
            // 全选
        } else if (tag == 300) {
            // 删除
        } else if (tag == 400) {
            // 上传
        }
    };

4. 在cell里面重写layoutSubviews方法修改按钮图片或者按钮颜色

// 修改TableViewCell在编辑模式下选中按钮的图片
- (void)layoutSubviews
{
    [super layoutSubviews];
    for (UIControl *control in self.subviews) {
        if (![control isMemberOfClass:NSClassFromString(@"UITableViewCellEditControl")]){
            continue;
        }
        
        for (UIView *subView in control.subviews) {
            if (![subView isKindOfClass: [UIImageView class]]) {
                continue;
            }
            
            UIImageView *imageView = (UIImageView *)subView;
            if (self.selected) {
                imageView.image = [UIImage imageNamed:@"check_selected"]; // 选中时的图片
            } else {
                imageView.image = [UIImage imageNamed:@"check_normal"];   // 未选中时的图片
            }
        }
    }
}
                               
// 修改TableViewCell在编辑模式下选中按钮的颜色
 - (void)layoutSubviews
{
    [super layoutSubviews];
    for (UIControl *control in self.subviews) {
        if (![control isMemberOfClass:NSClassFromString(@"UITableViewCellEditControl")]){
            continue;
        }
        
        for (UIView *subView in control.subviews) {
            if (![subView isKindOfClass: [UIImageView class]]) {
                continue;
            }
            
            UIImageView *imageView = (UIImageView *)subView;
            if (self.selected) {
                // KVC修改
                [imageView setValue:kNavBarColor forKey:@"tintColor"];   // 选中时的颜色
            } else {
                [imageView setValue:kGrayTextColor forKey:@"tintColor"]; // 未选中时的颜色(貌似没用?)
            }
        }
    }
}



效果图如下:


修改按钮颜色:





修改按钮图片:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值