我创建了一个自定义的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蓝色单元格突出显示,则只要选中该单元格,它就会突出显示。
为什么会这样?
答案 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实例。