मैं एक रंग-चयनकर्ता तालिका दृश्य लागू कर रहा हूं जहां उपयोगकर्ता 10 रंगों (उत्पाद पर निर्भर करता है) के बीच चयन कर सकता है। उपयोगकर्ता अन्य विकल्पों (जैसे हार्ड ड्राइव की क्षमता, ...) का भी चयन कर सकता है।
सभी रंग विकल्प अपने स्वयं के टेबलव्यू अनुभाग के अंदर हैं।
मैं टेक्स्टलेब के बाईं ओर एक छोटा वर्ग प्रदर्शित करना चाहता हूं जो वास्तविक रंग दिखा रहा है।
अभी मैं एक साधारण वर्ग UIView जोड़ रहा हूँ, इसे इस तरह से सही पृष्ठभूमि रंग दें:
- (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;
}
यह समस्याओं के बिना ठीक प्रदर्शित करता है।
मेरी एकमात्र समस्या यह है कि जब मैं "रंग" पंक्ति का चयन करता हूं, तो फीका-से-नीला चयन एनीमेशन के दौरान, मेरा कस्टम UIView (colorThumb) छिपा होता है। चयन / चयन चिह्न समाप्त होने के ठीक बाद यह फिर से दिखाई देता है, लेकिन यह एक बदसूरत विरूपण साक्ष्य पैदा करता है।
इसे ठीक करने के लिए मुझे क्या करना चाहिए? क्या मैं सही जगह पर सबव्यू नहीं डालूं?
(DidSelectRowAtIndexPath में कुछ खास नहीं है, मैं सिर्फ सेल के एक्सेसरी को चेकबॉक्स या कुछ भी नहीं बदलता हूं, और वर्तमान इंडेक्सपैथ को अचयनित करता हूं)।