【问题标题】:UITableViewCell: Accessory View going away when selectedUITableViewCell:选择时附件视图消失
【发布时间】:2011-06-24 16:11:08
【问题描述】:

我可能做错了,所以希望有人能告诉我应该怎么做。

我构建了一个表格视图来充当图例和颜色选择器。在 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;这样的代码来设置配件吧?
  • 你没有做任何明显错误的事情。您使用的是股票 UITableViewCell 还是自定义子类?尝试创建一个仅将自定义附件视图放入表中的最小项目,看看是否有同样的问题。
  • 附件视图在哪里设置?这可能是问题
  • 我在 Table View 的 tableView cellForRowAtIndexPath 中设置了附件视图,其中添加了单元格。这是一个库存的 UITableViewCell,我在其中设置单元格的 TextLabel 和 AccessoryView。

标签: objective-c accessoryview tableviewcell


【解决方案1】:

您可以使用 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];

【讨论】:

  • 为什么在使用UIImageView时它不会消失,而与UIView相反?
猜你喜欢
  • 1970-01-01
  • 2011-10-08
  • 1970-01-01
  • 2011-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多