Las celdas que no se seleccionan en UITableView con permite múltiples selects durante la edición establecida en el modo de edición

Tengo una UITableView que está configurada para permitir que se selectn varias celdas en el modo de edición. Sin embargo, los círculos blancos vacíos de la izquierda nunca cambian a círculos rojos con las marcas blancas dentro después de que se toca / selecciona una celda.

He leído sobre el deslizamiento para eliminar el problema con allowsMultipleSelectionDuringEditing , por lo que mi setEditing:animinated method se ve así:

 - (void)setEditing:(BOOL)editing animated:(BOOL)animated { self.tableView.allowsMultipleSelectionDuringEditing = editing; [super setEditing:editing animated:animated]; } 

Algunos resources en la networking sugieren la configuration allowsSelectionDuringEditing = NO; , pero eso no tiene efecto. Además, mi estilo de edición de celdas está establecido en UITableViewCellEditingStyleDelete , y cambiarlo tampoco tiene ningún efecto.

Cuando se toca una fila en el modo de edición, tableView:didSelectRowForIndexpath: se dispara, pero como se mencionó anteriormente, la interfaz de usuario no refleja esto.

Fue, como suele ser el caso, mi error.

El problema estaba en mi implementación de tableView:cellForRowAtIndexPath: donde establecía la propiedad selectionStyle la celda en UITableViewCellSelectionStyleNone . Por alguna razón, esto tiene el 'beneficio' agregado de deshabilitar la marca de verificación roja en el lado izquierdo en el modo de edición de selección múltiple.

Configuración cell.selectionStyle = UITableViewCellSelectionStyleGray; arreglado el problema

Viejo hilo pero también tuve este problema, sin embargo, encontré la causa de que mi celda personalizada estaba anulando los methods setSelected y setHighlighted sin llamada super.

Esto resultó en que las celdas no se pudieron seleccionar.

Tuve un problema similar, porque estaba trabajando muy duro para asegurarme de que mis células nunca mostraron ninguna selección (para un estilo de tabla de "burbuja de chat").

Así que, por supuesto, esta solución resultó en grandes barras de color en mi table, y tuve que encontrar otra forma de deshacerte de ellas.

En su cellForRowAtIndexPath, puede establecer un SelectedBackgroundView en lugar de establecer el styleSeleccion, y también habilitará las casillas de verificación. La vista puede ser el color de background de su celda, o clearColor, y entonces no aparecerá nada. Aquí está mi código:

 static dispatch_once_t onceToken; static UIView * selectedBackgroundView; dispatch_once(&onceToken, ^{ selectedBackgroundView = [[UIView alloc] initWithFrame:cell.frame]; selectedBackgroundView.backgroundColor = APP_CELL_BACKGROUND_COLOR; }); cell.selectedBackgroundView = selectedBackgroundView; 

Yo tuve el mismo problema. Asegúrese de que tableView:shouldHighlightRowAtIndexPath: devuelve YES , de lo contrario, la selección no ocurrirá, al less en iOS 7.

 - (BOOL)tableView:(UITableView *)tableView shouldHighlightRowAtIndexPath:(NSIndexPath *)indexPath { return YES; }