UITableView - 仅突出显示触摸的单个单元格

时间:2016-12-21 18:46:02

标签: ios swift uitableview interface-builder

我有一个UITableView,有多行。用户只能选择1行。我只想在触摸行时显示灰色选择效果,而不是在选择行后显示。

我在界面构建器中将选择效果设置为灰色。这样我就可以在触摸时看到选择效果,但是在我做出选择之后,它还会显示灰色选择颜色 。为了解决这个问题,我尝试了https://stackoverflow.com/a/10402278/6414904中的以下代码:

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    let cell = self.tableView.cellForRow(at: indexPath) as! AnswerTableViewCell
    tableView.deselectRow(at: indexPath, animated: true)
}

这部分起作用。当我选择一个单元格时,它只在触摸单元格时显示灰色选择效果,但在选择单元格后,灰色选择效果消失了。这就是我想要的,但添加了这个代码后,它还允许用户选择我不想要的多个行。使用这种方法,我也不能将didDeselectRowAt方法用于其他功能。

如何创建仅在触摸/保持期间显示但在选择后删除但仅允许始终选择1行的选择效果?

2 个答案:

答案 0 :(得分:1)

为此,特别提供了一种委托方法。

- (void)tableView:(UITableView *)tableView didHighlightRowAtIndexPath:(NSIndexPath *)indexPath {


 // do something here
}

答案 1 :(得分:0)

cell.setHighlighted(false, animated:true)添加到您的didSelectRow来电。

如果我没弄错的话,只有释放按钮后才会调用didSelectRow。