使用deselectRowAtIndexPath清除所有选择

时间:2015-01-18 21:19:35

标签: objective-c swift

我有一个允许多项选择的tableview。返回tableView时,我想清除之前的所有选择。以下代码仅清除第一个选定的单元格。我怎样才能清除所有细胞?

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

2 个答案:

答案 0 :(得分:2)

您应该使用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所说)。

参考文献:

答案 1 :(得分:1)

UITableViewController有一个属性:

clearsSelectionOnViewWillAppear

enter image description here