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

Cry*_*lue 4 objective-c tableviewcell accessoryview

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

我构建了一个表格视图作为图例和颜色选择器.在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;
Run Code Online (Sandbox Code Playgroud)

Kel*_*ler 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];
Run Code Online (Sandbox Code Playgroud)

  • 为什么当你使用UIImageView它不会消失,与UIView相比? (2认同)