사용자가 10 가지 색상 중에서 선택할 수있는 색상 선택기 테이블보기를 구현하고 있습니다 (제품에 따라 다름). 사용자는 다른 옵션 (하드 드라이브 용량 등)을 선택할 수도 있습니다.
모든 색상 옵션은 자체 테이블 뷰 섹션 내에 있습니다.
실제 색상을 보여주는 textLabel 왼쪽에 작은 사각형을 표시하고 싶습니다.
지금은 간단한 사각형 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에는 특별한 것이 없으며 셀의 액세서리를 확인란으로 변경하거나 현재 indexPath를 선택 취소하면됩니다).