4

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

我已经构建了一个表格视图来充当图例和颜色选择器。在 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;
4

1 回答 1

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];
于 2011-07-03T22:55:00.700 回答