为什么我的自定义单元格仅在用户移开手指时突出显示?

时间:2011-04-20 09:20:31

标签: iphone cocoa-touch uitableview uiimageview

我创建了一个自定义的UITableViewCell,并使用以下代码设置backgroundView:

- (void)layoutSubviews
{
    [super layoutSubviews];

    self.backgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"NormalImage"]];
    self.selectedBackgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"HighlightedImage"]];

    // other layout stuff
}

这样可以正常工作,但是当用户选择一行时,它不会突出显示 - 它只会在用户抬起他们的手指时突出显示(所以在转换到下一个之前你会看到它突出显示)视图)。如果我删除self.selectedBackgroundView行,以便有正常的iOS蓝色单元格突出显示,则只要选中该单元格,它就会突出显示。

为什么会这样?

2 个答案:

答案 0 :(得分:1)

在自定义表格单元格中尝试此代码

- (void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated
{
    [super setHighlighted:highlighted animated:animated];
    if (highlighted) {
    self.selectedBackgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"HighlightedImage"]];

    } else {
    self.backgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"NormalImage"]];

    }
}

答案 1 :(得分:0)

初始化自定义单元格时,可以指定backgroundView和selectedBackgroundView。根据{{​​3}},selectedBackgroudView在选择单元格时用作背景。

如果您在 - (void)layoutSubviews中编写这些代码,则在选择或取消选择单元格时,它将调用 - (void)layoutSubviews。然后,每次更改自定义单元格的状态时,都会将backgroundView和selectedBackgroundview重新分配给新的UIView实例。