我的tableview中有一个奇怪的问题。我想选择行,只想显示复选标记。我有一个包含多个部分的tableview。选择行并显示复选标记很好,但是在tableview下面10行,该行也会被选中???当选择多行时,再次排列10行,会出现多个选择。
我正在使用:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)newIndexPath {
[tableView deselectRowAtIndexPath:[tableView indexPathForSelectedRow] animated:NO];
UITableViewCell *cell = [tableView cellForRowAtIndexPath:newIndexPath];
if (cell.accessoryType == UITableViewCellAccessoryNone) {
cell.accessoryType = UITableViewCellAccessoryCheckmark;
// Reflect selection in data model
} else if (cell.accessoryType == UITableViewCellAccessoryCheckmark) {
cell.accessoryType = UITableViewCellAccessoryNone;
// Reflect deselection in data model
}
}
答案 0 :(得分:0)
这不是另一行被选中,这是重复使用的带有复选标记的单元格。在tableView:didSelectRowAtIndexPath:
中,您正在使用单元格来存储状态。在tableView:cellForRowAtIndexPath:
中,您没有解决该行是否应该带有复选标记。
您可能希望做的是ivar
NSMutableSet
并在didSelectRow..
中添加或删除集合中的indexPath
,具体取决于其已检查状态。然后在cellForRow..
中根据集合中accessoryType
的成员资格设置indexPath
属性。
编辑抱歉,我没有抓住您在数据模型中保存状态的注释。在这种情况下,您只需添加cellForRow...
中的支票即可。由于这是一个常见问题,我将保留原来的答案。