UITableViewCell:附件视图在选中时消失

时间:2011-06-24 16:11:08

标签: objective-c accessoryview tableviewcell

我可能会说这一切都错了,所以希望有人会告诉我应该做些什么。

我构建了一个表视图来充当图例和颜色选择器。在AccessoryView插槽中,我放置了一个只是彩色框的自定义视图。用户将显示图例,因此他们知道什么颜色意味着什么,他们可以选择颜色,然后通过将颜色分配给对象来“着色”图形。所有这些都很好。

我遇到的问题是所选的行样式。当我从图例中选择一行时,单元格变为蓝色,就像它应该的那样,但我的AccessoryView现在已经消失了。我不希望这种情况发生。但是,我不知道该怎么做才能让它不会消失。请记住,我仍然想要一行显示为“已选择”。但无论如何,我的配件视图都会消失(最有可能被所选颜色隐藏)。

以下是我现在正在设置配件视图的方法。

CGRect colorBox = CGRectMake(0, 0, 30, 30);
UIView *colorView = [[UIView alloc] initWithFrame:colorBox];
colorView.backgroundColor = [self colorWithHexString:[selOption valueForKey:@"qoColor"]];
cell.accessoryView = colorView;

1 个答案:

答案 0 :(得分:7)

您可以使用UIImageView而不是UIView,当选择单元格时,它不会消失。你可以为每种颜色制作微小的.png缩略图(如果没有很多),或者你可以在你的cellForRowAtIndexPath委托方法中动态创建它们,ala:

UIImageView *colorView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 30, 30)];

CGRect rect = CGRectMake(0.0f, 0.0f, 30.0f, 30.0f);
UIGraphicsBeginImageContext(rect.size);
CGContextRef context = UIGraphicsGetCurrentContext();

CGContextSetFillColorWithColor(context, [[self colorWithHexString:[selOption valueForKey:@"qoColor"]]; CGColor]);
CGContextFillRect(context, rect);

UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

[colorView setImage:image];

[cell setAccessoryView:colorView];
[colorView release];