我不确定下面的代码有什么问题。我所做的就是获取表格中的所有行并将它们标记为选中,如果它们已经选中,我就取消选中。每当我尝试这样做时,一些行索引路径是不正确的。每次总会遗漏一些索引路径。我做错了什么?
let visibleRows = self.tableView.indexPathsForVisibleRows
for row in visibleRows! {
if(self.sections[row.section].files[row.row].type != "cloud"){
let cell = self.tableView.cellForRowAtIndexPath(row)
cell?.setSelected(action, animated: true)
tableView.selectRowAtIndexPath(row, animated: true, scrollPosition: UITableViewScrollPosition.Top)
if(action == true){
cell?.accessoryType = .Checkmark
} else {
cell?.accessoryType = .None
NSNotificationCenter.defaultCenter().postNotificationName("disableOptions", object: nil)
}
}
}
执行以下步骤
- 创建并初始化
MutableArray
,可能在viewDidLoad
中。 - 添加选定
cell
对应的indexPath
。在delegate
方法中为cell
选择didSelectRowAtIndexPath
方法 执行此操作 - 检查
cellForRowAtIndexPath
in数组中的indexPath
。如果indexPath
存在,则处理为选中的cell
,否则处理为未选中的cell
。 - 如果
didSelectRowAtIndexPath
方法中需要,则从数组中删除indexPath
。