我想让UITableViewCell文本颜色在选中时更改,但仅限于此。我想禁用单元格中的背景突出显示。我看到了类似的解决方案:
cell.selectionStyle = UITableViewCellSelectionStyleNone;
但这也会禁用文本颜色更改。我想以一种简单的方式实现这种行为吗?
答案 0 :(得分:5)
在cellForRowAtIndexPath
中,执行:
步骤1.将您的选择样式设置为默认值。
cell.selectionStyle = UITableViewCellSelectionStyleDefault;
步骤2.将空视图设置为背景视图
UIView *view = [UIView new] ;
[view setBackgroundColor:[UIColor clearColor]];
[cell setSelectedBackgroundView:view];
步骤3.设置所需的文字颜色,比如说
[[cell textLabel] setTextColor:[UIColor orangeColor]];
[[cell textLabel] setHighlightedTextColor:[UIColor blackColor]];
希望,这有帮助。
答案 1 :(得分:1)
在自定义tableview单元格类中重写setSelected
方法,并根据选择状态更新文本颜色。
例如:
- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
[super setSelected:selected animated:animated];
if (selected) {
[self.textLabel setTextColor:[UIColor orangeColor]];
} else {
[self.textLabel setTextColor:[UIColor blackColor]];
}
}
在cellForRowAtIndexPath
中禁用默认小区选择
[cell setSelectionStyle:UITableViewCellSelectionStyleNone];
答案 2 :(得分:0)
Cell.textLabel.textColor=[UIColor graycColor];
Cell.textLabel.backgroundColor = [UIColor blackColor];
在cellForRowAtIndexPath
答案 3 :(得分:0)
您应该尝试使用-tableView:didSelectRowAtIndexPath:
然后你应该能够在单元格中定位文本(取决于它的设置方式,以及标签是否是单元格的属性)
答案 4 :(得分:0)
Swift 4 / iOS 11.2 / Xcode 9.2:
覆盖 setSelected 就是答案。
如果您希望默认行为加上其他一些更改,请单独留下 selectionStyle ,或将其设置为 .default :
selectionStyle = .default
如果您想要所有自定义行为,请将其设置为 .none :
selectionStyle = .none
无论哪种方式 - 即使您将其设置为 .none ,仍会调用被覆盖的 setSelected 。例如:
override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
if selected {
textLabel.textColor = orange
} else {
textLabel.textColor = black
}
}