Swift4:如何在 UITableViewController 中使用 reloadData 和 deselectRow?

Swift4 : How to use reloadData & deselectRow in UITableViewController?

我尝试在 viewWillApper 的 UITableView 上重新加载数据。 但是 deselectRow 动画效果不佳。 如何制作 reloadData 和 deselectRow 动画?

override func viewWillAppear(_ animated: Bool) {

    self.tableView.reloadData()
    if let indexPathForSelectedRow = tableView.indexPathForSelectedRow {
            self.tableView.deselectRow(at: indexPathForSelectedRow, animated: true)
    }
    super.viewWillAppear(animated)
}

以下不同。淡入淡出动画时间有点短

override func viewWillAppear(_ animated: Bool) {

    if (self.tableView.indexPathForSelectedRow != nil){
        self.tableView.reloadRows(at: [self.tableView.indexPathForSelectedRow!], with: .fade)
    } 

    super.viewWillAppear(animated)
}

我可以使用取消选择行动画更新单元格。

override func viewWillAppear(_ animated: Bool) {
    var indexes = self.tableView.indexPathsForVisibleRows
        var i = 0
        for var records in self.tableView.visibleCells{
            records.textLabel?.text = textDataArray[indexes![i].row]
        i = i + 1
    }
}

无需重新加载整个 table,您可以直接更新单元格的内容:

override func viewWillAppear(_ animated: Bool) {
    let indices = self.tableView.indexPathsForVisibleRows ?? []
    for index in indices {
       guard let cell = self.tableView.cellForRow(index) else { continue }
       cell.textLabel?.text = textDataArray[index.row]
    }

    super.viewWillAppear(animated)
}