如何在表格视图单元格上设置突出显示的图像?

时间:2010-03-11 03:20:27

标签: iphone cocoa-touch image uitableview

我已经按照Apple AdvancedTableViewCells中的代码进行了操作,并构建了一个带有单元格背景图像的表格视图。现在我想改变它,以便它显示我的图像的较暗版本,而不是蓝色突出显示颜色。这样做我需要遵循哪些步骤?我正在使用带有自定义NIB的UITableViewCell子类。我的背景图片实现为cell.backgroundView

到目前为止,我采取的步骤是:

  • 将单元格的selectionStyle更改为“无”
  • 将我的UILabel子视图中的突出显示颜色设置为浅色
  • 将背景的较暗版本创建为单独的图像
  • 覆盖setSelected: animated:

我想知道接下来的步骤。

2 个答案:

答案 0 :(得分:0)

您是否尝试替换setSelected: animated:内的图片?

- (void)setSelected:(BOOL)selected animated:(BOOL)animated
{
    [super setSelected:selected animated:animated];
    if (selected) {
        // replace image here
        // or move a pointer from one image to another
    }
}

答案 1 :(得分:0)

我找到了selectedBackgroundView属性。我正在使用这种方法而不是setSelected: animated:

- (id)initWithCoder:(NSCoder *)aDecoder
{
    self = [super initWithCoder:aDecoder];

    NSString *backgroundImagePath = [[NSBundle mainBundle] pathForResource:@"TableBackground" ofType:@"png"];
    UIImage *backgroundImage = [UIImage imageWithContentsOfFile:backgroundImagePath];
    self.backgroundView = [[[UIImageView alloc] initWithImage:backgroundImage] autorelease];
    self.backgroundView.frame = self.bounds;

    NSString *selectedBackgroundImagePath = [[NSBundle mainBundle] pathForResource:@"TableBackgroundDark" ofType:@"png"];
    UIImage *selectedBackgroundImage = [UIImage imageWithContentsOfFile:selectedBackgroundImagePath];
    self.selectedBackgroundView = [[[UIImageView alloc] initWithImage:selectedBackgroundImage] autorelease];
    self.selectedBackgroundView.frame = self.bounds;

    return self;
}

我不确定这是否是正确的方法,因为它引入了其他一些问题。有一点是单元格selectionStyle必须是UITableViewCellSelectionStyleNone之外的其他内容,否则它将不会显示背景图像。取消选择动画也已停止工作。我将提出一个关于这些问题的新问题。