当您点击一个单元格时,该行将被选中并突出显示。现在我想做的是禁用突出显示但允许选择。周围有一种方法。有一个问题可以回答这个问题,但它同时禁用了选择和突出显示。
Answers:
您可以从Storyboard中将单元格的选择样式设置为“ None”:
或从代码:
cell.selectionStyle = UITableViewCellSelectionStyleNone;
对于Swift 3:
cell.selectionStyle = UITableViewCellSelectionStyle.none
对于Swift 4及更高版本:
cell.selectionStyle = .none
将UITableViewCell
的selectedBackgroundView
颜色更改为透明。
let clearView = UIView()
clearView.backgroundColor = UIColor.clearColor() // Whatever color you like
UITableViewCell.appearance().selectedBackgroundView = clearView
或设置特定的单元格:
cell.backgroundView = clearView
cell.selectionStyle = UITableViewCellSelectionStyleNone
有时会破坏Apple动画逻辑中的某些内容。
UITableViewCell.appearance().selectionStyle = .None
awakeFromNib()
函数中可以有效
迅速3
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
tableView.deselectRow(at: indexPath, animated: true)
}
要添加自定义颜色,请使用以下代码。并使其透明使用alpha: 0.0
cell.selectedBackgroundView = UIView(frame: CGRect.zero)
cell.selectedBackgroundView?.backgroundColor = UIColor(red:0.27, green:0.71, blue:0.73, alpha:1.0)
如果您使用自定义颜色并希望将其设置为圆角,请使用:
cell.layer.cornerRadius = 8
另外,使用它可以获得更好的动画效果
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
tableView.deselectRow(at: indexPath, animated: true)
}
对于Objc:
[cell setSelectionStyle:UITableViewCellSelectionStyleNone];
- (void)viewDidLoad {
[super viewDidLoad];
_tableView.allowsSelection = YES;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
.. .. .. ..
[cell setSelectionStyle:UITableViewCellSelectionStyleNone];
. . . . ..
}
对于Swift 5,最好的方法是:
cell.selectionStyle = .none
cell.selectionStyle = UITableViewCellSelectionStyleNone;
在您的cellForRowAtIndexPath
方法中添加此内容