UITableViewCell: 选中时附件视图消失

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;

你是用像 cell.accessoryView = myColorBox; 这样的代码来设置附件,对吗? - benzado
你没有明显的错误。你是使用原始的UITableViewCell还是自定义子类?尝试创建一个最小化的项目,只在表格中放置一个自定义的accessoryView,并查看是否有相同的问题。 - benzado
你在哪里设置附加视图?那可能是问题所在。 - aporat
我在表视图的tableView cellForRowAtIndexPath中设置了附属视图,这是在添加单元格时完成的。而且这是一个标准的UITableViewCell,我在其中设置了单元格的TextLabel和AccessoryView。 - CrystalBlue
1个回答

7

您可以使用UIImageView代替UIView,这样当单元格被选中时它不会消失。如果颜色数量不多,您可以为每种颜色制作微小的.png缩略图,或者在cellForRowAtIndexPath委托方法中动态创建它们,例如:

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];

2
为什么使用UIImageView时它不会消失,而UIView会消失呢? - KarenAnne

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接