虽然@dasblinkenlight 的答案肯定更优雅,但对您来说可能太高级了。
本质是跟踪哪些单元格被选中,哪些未被选中。每当发生变化时,重新加载表格视图以更新复选标记。
您需要创建自己的变量来跟踪它。位图非常经济且优雅,但可能难以理解并且无法扩展到大量行。或者,您可以使用数组。
NSMutableArray *checkedArray = [NSMutableArray arrayWithObjects:
[NSNumber numberWithBool:YES],
[NSNumber numberWithBool:NO],
[NSNumber numberWithBool:NO],
[NSNumber numberWithBool:NO],
[NSNumber numberWithBool:NO],
[NSNumber numberWithBool:NO],
[NSNumber numberWithBool:NO],
[NSNumber numberWithBool:NO],
[NSNumber numberWithBool:NO],
nil];
要更改给定索引路径的行:
[checkedArray replaceObjectAtIndex:indexPath.row
withObject:[NSNumber numberWithBool:YES]]; //add
[checkedArray replaceObjectAtIndex:indexPath.row
withObject:[NSNumber numberWithBool:NO]]; //remove
并cellForRowAtIndexPath
确保您明确设置附件:
if ([[checkedArray objectAtIndex:indexPath.row] boolValue]) {
cell.accessoryType = UITableViewCellAccessoryTypeCheckmark;
}
else {
cell.accessoryType = UITableViewCellAccessoryTypeNone;
}