Kullanıcı, örneğin 10 renk arasından seçim yapabileceği bir renk seçici tablo görünümü uyguluyorum (ürüne bağlı). Kullanıcı ayrıca diğer seçenekleri de seçebilir (sabit sürücü kapasitesi, ... gibi).
Tüm renk seçenekleri kendi tablo görünümü bölümünün içindedir.
Metin renginin solunda gerçek rengi gösteren küçük bir kare görüntülemek istiyorum.
Şu anda basit bir kare UIView ekliyorum, doğru arka plan rengini ver, şöyle:
- (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;
}
Bu sorunsuz görüntüler.
Tek sorunum, bir "renk" satırı seçtiğimde, solmaya-mavi seçim animasyonu sırasında özel UIView'imin (colorThumb) gizlenmesi. Seçim / seçim kaldırma animasyonu sona erdikten hemen sonra tekrar görünür hale gelir, ancak bu çirkin bir eser üretir.
Bunu düzeltmek için ne yapmalıyım? Alt görünümü doğru yere eklemiyor muyum?
(DidSelectRowAtIndexPath'te özel bir şey yok, sadece hücrenin aksesuarını bir onay kutusuna veya hiçbir şeye değiştirmem ve mevcut indexPath'in seçimini kaldırıyorum).