当你点击UITableView中的一行时,该行会高亮显示并被选中。是否有可能禁用这个,所以点击一行什么都不做?


当前回答

swift 3的固定解决方案

cell.selectionStyle = .none

其他回答

至少从iOS 6开始,你可以覆盖自定义单元格中的方法来阻止蓝色高亮。没有其他交互被禁用或影响。所有三个都必须被覆盖。

- (void) setHighlighted:(BOOL)highlighted
{
}

- (void) setHighlighted:(BOOL)highlighted animated:(BOOL)animated
{
}

- (void) setSelected:(BOOL)selected animated:(BOOL)animated
{
}

我们可以编写这样的代码

 cell.selectionStyle = UITableViewCellSelectionStyleNone;

但当我们有自定义单元格xib时,在该行上面给出警告

自定义单元格xib

我们需要从界面构建器中设置选择样式为None

直接禁用突出显示TableViewCell到故事板

从ios6.0开始,UITableViewDelegate有tableView:shouldHighlightRowAtIndexPath:。(请参阅iOS文档。)

此方法允许您将特定行标记为不可突出显示(并且隐式地不可选择),而无需更改单元格的选择样式,也无需使用userInteractionEnabled = NO或这里记录的任何其他技术来打乱单元格的事件处理。

在UITableViewDataSource协议中,在方法cellForRowAt中添加:

let cell = tableView.dequeueReusableCell(withIdentifier: "YOUR_CELL_IDENTIFIER", for: indexPath)                
cell.selectionStyle = .none
return cell

OR

你可以到故事板>选择单元格>身份检查器>选择,从下拉菜单中选择none。