我正在编写一个带有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!");
}
}
现在,问题是使用这个程序我只得到被选中的单元格,这些单元格是当前显示的。我想确保程序在所有单元格中运行,甚至是未显示的单元格。我可能会使用另一种数据结构来跟踪选择,但它看起来有点多余。
有什么想法吗?
非常感谢!
克劳斯
答案 0 :(得分:2)
如果选择与否,你不能指望细胞告诉你,细胞会被重复使用并且总是改变状态 你需要管理所选indexPaths的单独NSSet,当用户点击一个单元格时,你将这个indexPath添加到集合中,当他取消选择单元格时,你从集合中删除indexPath。