2011-04-20 18 views
1

我创建了一个自定义的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

您可以初始化您的自定义单元格时分配backgroundView和selectedBackgroundView试试这个代码。根据apple's doc,selectedBackgroudView用作选中单元格时的背景。

如果你在 - (void)layoutSubviews中编写这些代码,当单元格被选中或未选中时,它会调用 - (void)layoutSubviews。然后,每当自定义单元格的状态发生变化时,您的backgroundView和selectedBackgroundview将重新分配给新的UIView实例。

+0

现货!一个很好的解释。谢谢。 – 2011-04-20 10:16:58

+0

在init方法中设置backgroundView和selectedBackgroundView不起作用。 – jdog 2014-02-21 04:55:31

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"]]; 

    } 
} 
相关问题