Uitableview 如何在从详细视图返回后禁用所选表格单元格高亮显示(返回顺序)

Uitableview 如何在从详细视图返回后禁用所选表格单元格高亮显示(返回顺序),uitableview,swift,Uitableview,Swift,我的表视图单元格有问题。使用带有嵌入式导航控制器的segue从详细视图返回主表视图后,我无法禁用表格单元格选择的突出显示。表格单元格仍处于选中状态。我不希望在单击其中一个单元格以显示详细信息时禁用表格单元格选择。我只想在从“详细信息”视图返回后禁用它们。我现在得到了它。我是这样解决的。这是一个简单的理论 我们在选择行时只需取消选择它 您还可以禁用单元格选择突出显示: import Foundation class CustomTableViewCell: UITableViewCell {

我的表视图单元格有问题。使用带有嵌入式导航控制器的segue从详细视图返回主表视图后,我无法禁用表格单元格选择的突出显示。表格单元格仍处于选中状态。我不希望在单击其中一个单元格以显示详细信息时禁用表格单元格选择。我只想在从“详细信息”视图返回后禁用它们。

我现在得到了它。我是这样解决的。这是一个简单的理论

我们在选择行时只需取消选择它


您还可以禁用单元格选择突出显示:

import Foundation

class CustomTableViewCell: UITableViewCell
{
  required init(coder aDecoder: NSCoder)
  {
    fatalError("init(coder:) has not been implemented")
  }

  override init(style: UITableViewCellStyle, reuseIdentifier: String?)
  {
    super.init(style: style, reuseIdentifier: reuseIdentifier)
    self.selectionStyle = UITableViewCellSelectionStyle.None
  } 
}
在重写func awakeFromNib()时也应足够:)


采用上述代码时,我遇到了一个致命错误。

Swift3解决方案:

它将允许选择,这是对swift 3的修复

cell.selectionStyle = UITableViewCellSelectionStyle.none
斯威夫特3

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    tableView.deselectRow(at: indexPath, animated: true)
}

如果启用了单选,我喜欢的方法是使用viewdideappear方法。这样,用户可以在返回到tableView时看到取消选择动画

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(true)
    if let selectedRow = tableView.indexPathForSelectedRow {
        tableView.deselectRow(at: selectedRow, animated: true)
    }
}

谢谢您,先生。我真的很感谢您的帮助。我无法禁用表格单元格选择。我只想在选择一个单元格并从详细信息返回后隐藏突出显示。这实际上只会禁用突出显示-选择仍然有效。为什么在
表格视图
后打问号?它的类型是
UITableView
而不是
UITableView?
。这很好,但它不会向用户显示他/她选择的单元格的任何信息感谢您配合回答我认为您应该在
视图中执行此操作将出现
,否则,取消选择动画将在视图控制器出现后开始,并且似乎有点晚。此解决方案类似于Notes应用程序。对我来说,这看起来比在用户点击手机后让高光消失更优雅。为什么回答了和你一样的问题?如果您有更好的解决方案,欢迎您编辑。
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    tableView.deselectRow(at: indexPath, animated: true)
}
override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(true)
    if let selectedRow = tableView.indexPathForSelectedRow {
        tableView.deselectRow(at: selectedRow, animated: true)
    }
}