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

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

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

这是我现在设置附件 View 的方式。

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

最佳答案

您可以使用 UIImageView 而不是 UIView,它不会在单元格被选中时消失。您可以为每种颜色制作微小的 .png 缩略图(如果没有很多),也可以在您的 cellForRowAtIndexPath 委托(delegate)方法中动态创建它们,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];

关于objective-c - UITableViewCell : Accessory View going away when selected,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6470643/

10-12 22:01