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"]; // 未选中时的颜色(貌似没用?)
}
}
}
}
效果图如下:
修改按钮颜色:
修改按钮图片: