Saya menerapkan tampilan tabel pemilih warna di mana pengguna dapat memilih di antara, katakanlah, 10 warna (tergantung pada produk). Pengguna juga dapat memilih opsi lain (seperti kapasitas hard drive, ...).
Semua pilihan warna ada di dalam bagian tampilan tabel mereka sendiri.
Saya ingin menampilkan kotak kecil di sebelah kiri textLabel yang menunjukkan warna sebenarnya.
Saat ini saya sedang menambahkan kotak UIView sederhana, berikan warna latar yang benar, seperti ini:
- (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;
}
Ini menampilkan baik-baik saja tanpa masalah.
Satu-satunya masalah saya adalah ketika saya memilih baris "warna", selama animasi pemilihan fade-to-blue, UIView khusus saya (colorThumb) disembunyikan. Ini akan terlihat lagi tepat setelah animasi pemilihan / deseleksi berakhir, tetapi ini menghasilkan artefak yang jelek.
Apa yang harus saya lakukan untuk memperbaikinya? Bukankah saya harus memasukkan subview di tempat yang tepat?
(Tidak ada yang istimewa di didSelectRowAtIndexPath, saya hanya mengganti aksesori sel ke kotak centang atau tidak sama sekali, dan batal memilih indexPath saat ini).