1

我正在编写一个带有 tableview 的 iPhone 应用程序,它显示一个项目列表,每个项目都有一个复选标记。我只需单击一下即可选择/取消选择每个项目。当我按下按钮 [DONE] 时,我想遍历所有单元格并检查哪个单元格启用了复选标记。就像是:

    for (int i = 0; i < [fullDataset count]; i++) {
    NSIndexPath *indexPath = [NSIndexPath indexPathForRow:i inSection:0];
    UITableViewCell* cell = [self.tableView cellForRowAtIndexPath:indexPath];
    if (cell.accessoryType == UITableViewCellAccessoryCheckmark) {
        NSLog(@"THIS CELL IS SELECTED!");
    } 
}

现在,问题是使用这个过程我只得到被选中并且当前显示的单元格。我想确保该过程在所有单元格中运行,即使是未显示的单元格。我可能会使用另一个数据结构来跟踪选择,但它看起来有点多余。

任何的想法?

非常感谢!

克劳斯

4

1 回答 1

2

你不能指望单元格告诉你是否被选中,单元格会被重用并总是改变那里的状态。
您需要管理所选 indexPaths 的单独 NSSet,当用户点击单元格时,您将此 indexPath 添加到集合中,当他取消选择单元格时,您从集合中删除 indexPath。

于 2012-07-13T16:38:33.860 回答