使用 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 所说)。
参考文献:
我有一个允许多选的表格视图。返回 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 所说)。
参考文献: