2016-10-26 77 views
0

我不确定下面的代码有什么问题。我所做的只是获取表格中的所有行并将其标记为选中状态,如果它们已被选中,则取消选择它们。每当我尝试这个时,一些行索引路径是不正确的。总是有几条索引路径每次都错过。我究竟做错了什么?多重选择IOS

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) 
     } 
    } 
} 
+1

你确定你得到所有的行?您的代码是为VisibleRows编写的。 – Wolverine

回答

0

执行以下步骤

  1. 创建和初始化一个MutableArray,可能是在viewDidLoad
  2. 添加所选cellindexPath。在delegate方法中为cell选择didSelectRowAtIndexPath方法
  3. 检查数组中的indexPathcellForRowAtIndexPath。如果indexPath存在,则作为选择的cell处理,否则作为未选择的cell
  4. 如果需要,从didSelectRowAtIndexPath方法中删除indexPath阵列。
+0

'NSMutableIndexSet'比数组好 – Paulw11

+0

感谢Paulw11,我只是提供了实现的步骤,不管是什么收集对象:) – KGen

+0

我很抱歉,问题不在于全选,但我明白你的方式工作,完美的,谢谢你的回应,我问另一个问题,描述确切的情况,你可以看看它,http://stackoverflow.com/questions/40255463/multi-select-is-not-working -properly功能于IOS –