gpt4 book ai didi

objective-c - 为什么 UITableViewCell 选择时所有背景都消失了?

转载 作者:IT老高 更新时间:2023-10-28 11:43:25 25 4
gpt4 key购买 nike

我当前项目的 UITableViewCell 行为让我感到困惑。我有一个相当简单的 UITableViewCell 子类。它向基本 View 添加了一些额外的元素(通过 [self.contentView addSubview:...] 并在元素上设置背景颜色,使它们看起来像黑色和灰色的矩形框。

因为整个表格的背景都有这种混凝土般的纹理图像,所以每个单元格的背景都需要是透明的,即使在被选中时也是如此,但在这种情况下,它应该变暗一点。我已经设置了一个自定义的半透明选定背景来实现这个效果:

UIView *background = [[[UIView alloc] initWithFrame:self.bounds] autorelease];
background.backgroundColor = [[UIColor blackColor] colorWithAlphaComponent:0.6];
background.opaque = NO;

[self setSelectedBackgroundView:background];

虽然这会产生正确的背景外观,但当我选择单元格时会发生奇怪的副作用;所有其他背景都以某种方式关闭。这是一个屏幕截图。底部单元格看起来应该并且未被选中。顶部的单元格被选中,但它应该显示黑色和灰色的矩形区域,但它们已经消失了!

Screenshot of the simulator. The top cell is selected, the bottom is not.

谁知道这里发生了什么,更重要的是:我该如何纠正这个问题?

最佳答案

发生的情况是 TableViewCell 中的每个 subview 都将收到 setSelected 和 setHighlighted 方法。 setSelected 方法将删除背景颜色,但如果您将其设置为选定状态,它将被纠正。

例如,如果这些是作为 subview 添加到自定义单元格中的 UILabel,那么您可以将其添加到 TableViewCell 实现代码的 setSelected 方法中:

- (void)setSelected:(BOOL)selected animated:(BOOL)animated
{
[super setSelected:selected animated:animated];

self.textLabel.backgroundColor = [UIColor blackColor];

}

self.textLabel 将是上图中显示的任何标签

我不确定你在哪里添加你选择的 View ,我通常在 setSelected 方法中添加它。

或者,您可以继承 UILabel 并覆盖 setHighlighted 方法,如下所示:

-(void)setHighlighted:(BOOL)highlighted
{
[self setBackgroundColor:[UIColor blackColor]];
}

关于objective-c - 为什么 UITableViewCell 选择时所有背景都消失了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7053340/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com