didselectrowatindexpath,选择和取消选择Tableview中的行

时间:2013-12-03 09:54:39

标签: uitableview row tableview didselectrowatindexpath

我有一个视图行,我想在第一次按标签选择一行(或更多)。这没问题,但我喜欢在第二次取消选择一个标签。 一些想法? 期待着你的到来。 关心Hutch

1 个答案:

答案 0 :(得分:0)

使用此示例代码选择复选标记:https://github.com/vikingosegundo/checkmark/tree/master/Checkmark

设置附件视图需要在tableView:cellForRowAtIndexPath:方法中进行。如果要从外部更改附件,外部方法需要首先更改模型以指示必须在某些单元格中放置复选标记,然后在UITableView上调用reloadData。

存储检查单元格的一种方法是NSIndexSet对象数组 - 每个部分有一个索引集。在下面的示例中,我显示了单个部分的代码,但您应该了解如何使多个部分工作。

// This variable needs to be declared in a place where your data source can get it
NSMutableIndexSet *selected;

// You need to initialize it in the designated initializer, like this:
selected = [[NSMutableIndexSet alloc] init];

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
    }
    if ([selected containsIndex:indexPath.row]) {
        [cell setAccessoryType:UITableViewCellAccessoryCheckmark];
    } else {
        [cell setAccessoryType:UITableViewCellAccessoryNone];
    }
    // Do the rest of your code
    return cell;
}

现在,在您要设置选定或未选定行的代码中,只需调用[selected addIndex:rowToSelect]或[selected removeIndex:rowToUnselect],并调用表的reloadData。