Tôi đang triển khai chế độ xem bảng chọn màu, trong đó người dùng có thể chọn trong số 10 màu (phụ thuộc vào sản phẩm). Người dùng cũng có thể chọn các tùy chọn khác (như dung lượng ổ cứng, ...).Chế độ xem phụ UITableViewCell biến mất khi ô được chọn
Tất cả các tùy chọn màu đều nằm trong phần xem bảng của riêng họ.
Tôi muốn hiển thị một hình vuông nhỏ ở bên trái của dòng văn bảnNhãn hiển thị màu thực tế.
Ngay bây giờ tôi thêm một UIView vuông đơn giản, cung cấp cho nó màu nền đúng, như thế này:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:RMProductAttributesCellID];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:RMProductAttributesCellID] autorelease];
cell.indentationWidth = 44 - 8;
UIView *colorThumb = [[[UIView alloc] initWithFrame:CGRectMake(8, 8, 28, 28)] autorelease];
colorThumb.tag = RMProductAttributesCellColorThumbTag;
colorThumb.hidden = YES;
[cell.contentView addSubview:colorThumb];
}
RMProductAttribute *attr = (RMProductAttribute *)[_product.attributes objectAtIndex:indexPath.section];
RMProductAttributeValue *value = (RMProductAttributeValue *)[attr.values objectAtIndex:indexPath.row];
cell.textLabel.text = value.name;
cell.textLabel.backgroundColor = [UIColor clearColor];
UIView *colorThumb = [cell viewWithTag:RMProductAttributesCellColorThumbTag];
colorThumb.hidden = !attr.isColor;
cell.indentationLevel = (attr.isColor ? 1 : 0);
if (attr.isColor) {
colorThumb.layer.cornerRadius = 6.0;
colorThumb.backgroundColor = value.color;
}
[self updateCell:cell atIndexPath:indexPath];
return cell;
}
này hiển thị tốt mà không có vấn đề.
Vấn đề duy nhất của tôi là khi tôi chọn hàng "màu", trong hoạt ảnh chọn màu mờ dần, tùy chỉnh UIView (colorThumb) của tôi bị ẩn. Nó được hiển thị một lần nữa ngay sau khi hoạt ảnh lựa chọn/bỏ chọn kết thúc, nhưng điều này tạo ra một tạo tác xấu xí.
Tôi nên làm gì để sửa lỗi này? Tôi không chèn subview vào đúng nơi?
(Không có gì đặc biệt trong didSelectRowAtIndexPath, tôi chỉ thay đổi phụ kiện của ô thành hộp kiểm hoặc không có gì và bỏ chọn chỉ mục hiện tại).
upadteCell là gì tất cả về? – Idan
updateCell thực hiện một số chỉnh sửa nhỏ như thiết lập dấu kiểm hoặc không, chọn màu văn bản tùy thuộc vào tính khả dụng, ... nhưng không có thay đổi thực sự liên quan đến chính ô đó hoặc colorThumb. – Cyrille
câu trả lời được chấp nhận không cung cấp giải pháp, xem câu trả lời của tôi dưới đây cho giải pháp –