我希望在UITableView中进行多项选择,并将其数据分成一个数组或一个字典......
答案 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];