2

我有一个方法 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;
            }

        }
    }   
}
4

3 回答 3

4

从文档中:

cellForRowAtIndexPath:

返回值:

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

您可以创建一个数组,其中包含选中或未选中的布尔值列表,并在单元格可见时对其进行询问。

于 2013-03-21T09:25:17.363 回答
0

您需要在 " " 方法中选中或取消选中单元格的 " selected" 或 " checked" 状态cellForRowAtIndexPath。底层数据源是另一个地方,您可以在其中跟踪您尝试在单元格中表示的数据的状态。

通过这个函数简单地修改 UITableViewCells 只会更新当前在表格视图中可见的单元格。

于 2013-03-21T09:15:30.180 回答
0

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

if (indexPath.section== add the section){
cell.accessoryType = UITableViewCellAccessoryCheckmark;
}
else{
cell.accessoryType = UITableViewCellAccessoryNone;
}
于 2013-03-21T09:27:43.967 回答