修改tableView多選預設藍色選中按鈕 , 全選 , 取消全選
阿新 • • 發佈:2019-02-09
經常會有需求 , 更改tableView多選的預設按鈕顏色 , 預設為藍色 , 很多情況下可能會根據自己專案的主題色進行修改 . 簡單粗暴 , 直接上程式碼 .
重寫Cell的佈局方法 , 依次遍歷子控制元件 , 修改預設顏色
- (void)layoutSubviews
{
[super layoutSubviews];
[self.subviews enumerateObjectsUsingBlock:^(__kindof UIControl * _Nonnull control, NSUInteger idx, BOOL * _Nonnull stop) {
if ([control isMemberOfClass:NSClassFromString(@"UITableViewCellEditControl")]) {
for (UIView *view in control.subviews) {
if ([view isKindOfClass:[UIImageView class]]) {
UIImageView *imageView = (UIImageView *)view;
if (self.selected ) {
//設定選中時的照片
imageView.image = JYLoadImage(@"JY_selected");
}else{
//設定未選中時的照片
imageView.image = JYLoadImage(@"JY_select");
}
}
}
}
}];
}
全選和取消全選 , 遍歷資料來源 , 建立 NSIndexPatch
//清空選中陣列
[self.selectedArray removeAllObjects];
for (NSInteger index = 0; index < self.trashArray.count; index ++) {
//取消全選
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:index];
if (self.isAllSected) {
//取消選中該行
[self.trashList deselectRowAtIndexPath:indexPath animated:NO];
}else{
//全選
//加入選中陣列
[self.selectedArray addObject:indexPath];
//選中該行
[self.trashList selectRowAtIndexPath:indexPath animated:NO scrollPosition:UITableViewScrollPositionNone];
}
}