选择UITableView中的所有单元格,甚至是iOS中的不可见单元格

时间:2013-03-21 09:12:24

标签: iphone ios uitableview selectall

我有一个方法selectAll来选择UITableView中的所有单元格。此方法选中复选框(UIButton)。它仅适用于"visible"单元格,但不适用于"invisible"单元格!

这是我的方法:

- (IBAction)selectAll:(id)sender {

    for (NSInteger s = 0; s < self.tableView.numberOfSections; s++) {
        for (NSInteger r = 0; r < [self.tableView numberOfRowsInSection:s]; r++) {

            CustomCell *cell = [self.tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:r inSection:s]];

            if(!cell.checkbox.selected){
                cell.checkbox.selected = !cell.checkbox.selected;
                cell.account.checked = cell.checkbox.selected;
            }

        }
    }   
}

3 个答案:

答案 0 :(得分:4)

来自文档:

cellForRowAtIndexPath:

返回值:

  

表示表格的单元格或nil if the cell is not visible或indexPath的对象超出范围。

您可以创建一个包含已选中或未选中的布尔列表的数组,并在单元格可见时查询它。

答案 1 :(得分:0)

您需要在“selected”方法中选中或取消选中细胞的“checked”或“cellForRowAtIndexPath”状态。基础数据源是另一个可以跟踪您尝试在单元格中表示的数据状态的地方。

只需通过此功能修改UITableViewCells,即可更新当前在表格视图中可见的单元格。

答案 2 :(得分:0)

在cellForRowAtIndexPath中检查它。只需使用合适的indexPath.section

检查if条件
if (indexPath.section== add the section){
cell.accessoryType = UITableViewCellAccessoryCheckmark;
}
else{
cell.accessoryType = UITableViewCellAccessoryNone;
}