如何在UITableView中选择多行?

时间:2011-03-21 08:02:55

标签: iphone xcode uitableview

我希望在UITableView中进行多项选择,并将其数据分成一个数组或一个字典......

2 个答案:

答案 0 :(得分:11)

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{

    UITableViewCell *selectedCell = [tableView cellForRowAtIndexPath:indexPath];

    if ([selectedCell accessoryType] == UITableViewCellAccessoryNone) {
        [selectedCell setAccessoryType:UITableViewCellAccessoryCheckmark];
        [selectedIndexes addObject:[NSNumber numberWithInt:indexPath.row]];
    } else {
        [selectedCell setAccessoryType:UITableViewCellAccessoryNone];
        [selectedIndexes removeObject:[NSNumber numberWithInt:indexPath.row]];
    }

    [tableView deselectRowAtIndexPath:indexPath animated:NO];

}

selectedIndexes必须是一个数组,您可以在其中管理选定的单元格索引并在以后使用。

答案 1 :(得分:1)

尝试做同样的事情,但是当我向下滚动列表时,我在其他行上看到了“选中的”复选标记附件。此外,取消选择列表中的一个“幻像”项目会导致附件在列表的上半部分消失 - 但阵列不受影响。

以下是我实施的方法:

    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *selectedCell = [tableView cellForRowAtIndexPath:indexPath];
if ([selectedCell accessoryType] == UITableViewCellAccessoryNone) {
    [selectedCell setAccessoryType:UITableViewCellAccessoryCheckmark];
    [selectedIndexes addObject:[NSNumber numberWithInt:indexPath.row]];
    NSLog(@"IVC selectedIndexes AddObject @ %d:", indexPath.row);
    NSLog(@"IVC selectedIndexes: %@", selectedIndexes);
    } else {
    [selectedCell setAccessoryType:UITableViewCellAccessoryNone];
    [selectedIndexes removeObject:[NSNumber numberWithInt:indexPath.row]];
    NSLog(@"IVC selectedIndexes RemoveObject @ %d:", indexPath.row);
    }
[tableView deselectRowAtIndexPath:indexPath animated:NO];
}

编辑:添加解决方案:您需要将其放在“cellForRowAtIndexPath”代码中:

    if ([selectedIndexes containsObject:[NSNumber numberWithInt:indexPath.row]]) [cell setAccessoryType:UITableViewCellAccessoryCheckmark];