我已经尝试过here提供的方法,一切正常,除了我无法使 selectedBackgroundView
透明,它保持白色。在我的自定义 UITableViewCell
类中,我有:
-(void)awakeFromNib {
UIView *bkgView = [[UIView alloc]initWithFrame:self.frame];
bkgView.alpha = 0.5;
bkgView.backgroundColor = [UIColor clearColor];
self.selectedBackgroundView = bkgView;
}
我还在 setSelected
方法中调用了 [self setNeedsDisplay];
。
我想要的是删除蓝色突出显示(来自 UITableViewCellSelectionStyleBlue
,我不想将其设置为 UITableViewCellSelectionNone
因为它将禁用 setHighlight/Selected
调用)并且仍然会调用突出显示/选择方法。我已经非常接近了,只是 selectedBackgorundView
仍然是白色的!如果我将其设置为 redColor
或 blueColor
,它将显示为红色或蓝色,但是当我设置 clearColor
时,它将显示为白色。我考虑过使用透明 PNG 图像通过 colorWithPatternImage
设置背景,但我想避免这种情况。
我更喜欢尝试弄清楚这一点,因为依赖这两个方法调用会更干净,而且我还想保留公开指示器的使用,该指示器在选择时会变成白色,否则如果我使用,它将保持黑色UITableViewCellSelectionNone
。
最佳答案
我建议使用 tableView:willSelectRowAtIndexPath: 并返回 nil。 这样,当要选择单元格时,您仍然会收到通知。但是,它实际上不会被选择,从那里您可以自己管理选择,而不必处理控件的默认样式。
关于ios - 如何摆脱表格单元格的选择样式,但仍然接收 setSelected/设置突出显示的单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13334900/