点击一行将选择多行

时间:2012-02-05 05:38:00

标签: select ios5 tableview rows

我的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
    }
}

1 个答案:

答案 0 :(得分:0)

这不是另一行被选中,这是重复使用的带有复选标记的单元格。在tableView:didSelectRowAtIndexPath:中,您正在使用单元格来存储状态。在tableView:cellForRowAtIndexPath:中,您没有解决该行是否应该带有复选标记。

您可能希望做的是ivar NSMutableSet并在didSelectRow..中添加或删除集合中的indexPath,具体取决于其已检查状态。然后在cellForRow..中根据集合中accessoryType的成员资格设置indexPath属性。

编辑抱歉,我没有抓住您在数据模型中保存状态的注释。在这种情况下,您只需添加cellForRow...中的支票即可。由于这是一个常见问题,我将保留原来的答案。