Ios 使UITableViewCell短暂闪烁

Ios 使UITableViewCell短暂闪烁,ios,swift,uitableview,highlight,visual-effects,Ios,Swift,Uitableview,Highlight,Visual Effects,我有一个UITableView设置,我正在探索突出显示UITableView单元格的所有不同选项,我想知道以下几点: func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { . . cell.selectionStyle = .gray return cell } 现在发生的事情是,当一个单元格被选中时

我有一个
UITableView
设置,我正在探索突出显示
UITableView单元格的所有不同选项,我想知道以下几点:

 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        .
        .
    cell.selectionStyle = .gray
    return cell
}
现在发生的事情是,当一个单元格被选中时,它会以灰色高亮显示,我想知道,是否有可能在大约0.5秒后取消选中该单元格

基本上,是否可以使手机只短暂闪烁,以便用户知道他与手机进行了交互,但手机不会保持选中状态?我将此tableView用作侧菜单,保持高亮显示不是我想要的行为


谢谢

终于成功了,我所做的是:

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
 tableView.cellForRow(at: indexPath)?.backgroundColor = .gray
    DispatchQueue.main.asyncAfter(deadline: .now()) {
        UIView.animate(withDuration: 0.5, animations: {
            tableView.cellForRow(at: indexPath)?.backgroundColor = .none
        })
    }

也许这会帮助其他人。唯一的问题是,点击的单元格只有在手势结束后(即仅点击)才会在按下时高亮显示。如果有人对此有解决方案,我将不胜感激,但现在这就足够了。

最终使其发挥作用,我所做的是:

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
 tableView.cellForRow(at: indexPath)?.backgroundColor = .gray
    DispatchQueue.main.asyncAfter(deadline: .now()) {
        UIView.animate(withDuration: 0.5, animations: {
            tableView.cellForRow(at: indexPath)?.backgroundColor = .none
        })
    }

也许这会帮助其他人。唯一的问题是,点击的单元格只有在手势结束后(即仅点击)才会在按下时高亮显示。如果有人对此有解决方案,我将不胜感激,但现在就这样做。

您可以在
didSelectRow
方法中取消选择行,单元格将高亮显示,然后选择将淡出,让用户知道他们与单元格进行了交互

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
  tableView.deselectRow(at: indexPath, animated: true)
  // Do whatever else you need
}

您可以在
didSelectRow
方法中取消选择行,单元格将高亮显示,然后选择将淡出,让用户知道他们与单元格进行了交互

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
  tableView.deselectRow(at: indexPath, animated: true)
  // Do whatever else you need
}

首先,我想没有必要使用
DispatchQueue.main.asyncAfter(截止日期:.now())
。UIView.animate应该在主线程上运行。不管怎么说,Emilios的答案可能更正确,因为它取消选择单元格,而您的答案只会更改背景。这种方法对我有效,因为我只是将tableView用作侧菜单,但我理解,从干净的代码角度来看,如果我不需要选择单元格,将来最好取消选择行。谢谢首先,我想没有必要使用
DispatchQueue.main.asyncAfter(截止日期:.now())
。UIView.animate应该在主线程上运行。不管怎么说,Emilios的答案可能更正确,因为它取消选择单元格,而您的答案只会更改背景。这种方法对我有效,因为我只是将tableView用作侧菜单,但我理解,从干净的代码角度来看,如果我不需要选择单元格,将来最好取消选择行。谢谢