使用 deselectRowAtIndexPath 清除所有选择

Clear all Selections with deselectRowAtIndexPath

我有一个允许多选的表格视图。返回 tableView 时,我想清除所有以前的选择。下面的代码仅清除第一个选定的单元格。如何清除所有单元格?

override func viewWillAppear(animated: Bool) {
    if (self.tableView.indexPathForSelectedRow() != nil) {
        self.tableView.deselectRowAtIndexPath(self.tableView.indexPathForSelectedRow()!, animated: true)
    }
}

UITableViewController 有一个 属性:

clearsSelectionOnViewWillAppear

您应该改用 indexPathsForSelectedRows()

override func viewWillAppear(animated: Bool) {
    if let selectedRows = tableView.indexPathsForSelectedRows() {
        for indexPath in selectedRows {
            tableView.deselectRowAtIndexPath(indexPath as NSIndexPath, animated: true)
        }
    }
}

或者,如果您使用的是 UITableViewController,您可以将其名为 clearsSelectionOnViewWillAppear 的 属性 设置为 True(如@swiftshokunin 所说)。

参考文献: