UITableview附件types在滚动时消失

我做了一个tableView,我需要select多个选项。 选项被选中,但当我滚动表视图的复选标记选项获取消失,其他行显示复选标记。 这是我的代码在didselectedrowAtindex方法table_optionUITableViewselectedcellsNSMutableArray

 [table_option deselectRowAtIndexPath:indexPath animated:YES]; NSNumber *rowNsNum = [NSNumber numberWithUnsignedInt:indexPath.row]; if ( [selectedCells containsObject:rowNsNum] ) { if (cell.accessoryType == UITableViewCellAccessoryCheckmark) cell.accessoryType = UITableViewCellAccessoryNone; else cell.accessoryType = UITableViewCellAccessoryCheckmark; [selectedCells removeObject:rowNsNum]; sel.text=@"Select"; // cell.accessoryType = UITableViewCellAccessoryNone; } else { if (cell.accessoryType == UITableViewCellAccessoryCheckmark) cell.accessoryType = UITableViewCellAccessoryNone; else cell.accessoryType = UITableViewCellAccessoryCheckmark; [selectedCells addObject:rowNsNum]; sel.text=@"Selected"; // cell.accessoryType = UITableViewCellAccessoryCheckmark; } [table_option reloadData]; 

请尽快帮忙

您需要检查cellForRowAtIndexPath方法已被选中或不在。 这个问题正在发生,因为tableView重新使用单元格。 请在你的cellForRowAtIndexPath方法中写下面的代码,它会解决这个问题。

 NSNumber *rowNsNum = [NSNumber numberWithUnsignedInt:indexPath.row]; if ( [selectedCells containsObject:rowNsNum] ) { cell.accessoryType = UITableViewCellAccessoryCheckmark; } else { cell.accessoryType = UITableViewCellAccessoryNone; } 

在我的情况下,只是在cellForRowAtIndexPath设置accessoryType = UITableViewCellAccessoryCheckmark不起作用。

UITableView到达它的第一个元素,并且如果你尝试滚动更多的时候,就会出现这个问题,可见的单元格下来,他们的复选标记消失了。

 NSNumber *rowNsNum = [NSNumber numberWithUnsignedInt:indexPath.row]; [cell setAccessoryType:UITableViewCellAccessoryNone];// tricky part is this line if ( [selectedCells containsObject:rowNsNum] ) { cell.accessoryType = UITableViewCellAccessoryCheckmark; } else { cell.accessoryType = UITableViewCellAccessoryNone; } 

检查这个例子

 cell.accessoryType = UITableViewCellAccessoryNone; for (int x = 0; x < selectedIds.count; x++) { if ([[selectedIds objectAtIndex:x] isEqualToString:[[source objectAtIndex:[indexPath row]] objectForKey:@"id"]]) cell.accessoryType = UITableViewCellAccessoryCheckmark; }