didDeselectRowAt从未打过电话

时间:2017-07-28 07:06:12

标签: ios swift uitableview

我有一个UITableView,其中 UITableViewDelegate设置如下:

    tableView = UITableView()
    tableView.delegate = self
    tableView.dataSource = self

在委托中,我实现了(以及其他)函数

  • func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
  • func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath)

我的自定义Cell继承自UITableViewCell以这种方式覆盖setSelected

override func setSelected(_ selected: Bool, animated: Bool) {
    super.setSelected(selected, animated: animated)

    if selected {
        // visual updates (with a small animation)
    } else {
        // visual updates
    }
}

问题就是,点击单元格时,始终会调用didSelectRowAt而不会didDeselectRowAt,因此,单元格始终显示为已选中。我做错了什么?

2 个答案:

答案 0 :(得分:1)

你必须实现这个:

yourTableView.deselectRow(at: indexPath, animated: true)

在didSelectRowAt方法或didDeselectRowAt方法中。

希望这有用:)

答案 1 :(得分:0)

确保您的小区选择样式为"无":

Picture 1

Picture 2