Seleccione múltiples filas en UITableview

Me gustaría seleccionar varias filas en una vista UITable tal como lo hace Apple en la aplicación de alarma nativa (ver imagen texto alternativo

¿Cómo puedo hacer eso?

Todas las respuestas que vi hasta ahora eran antiguas (y dije “No se puede hacer”) o se refieren a la selección de múltiples filas en la aplicación de correo nativa. Ese método no es lo que me gustaría porque primero tienes que ingresar al modo “editar”. Quiero poder seleccionar las filas de inmediato.

Espero que alguien pueda ayudar.

cristiano

En

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

hacer

  if([tableView cellForRowAtIndexPath:indexPath].accessoryType == UITableViewCellAccessoryCheckmark){ [tableView cellForRowAtIndexPath:indexPath].accessoryType = UITableViewCellAccessoryNone; }else{ [tableView cellForRowAtIndexPath:indexPath].accessoryType = UITableViewCellAccessoryCheckmark; } 

Editar:

También debe usar una matriz que mapee las celdas marcadas y en cellForRowAtIndexPath debe verificar si el tipo de accesorio debe marcarse o no.

La forma más fácil que he encontrado:

 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { [tableView cellForRowAtIndexPath:indexPath].accessoryType = UITableViewCellAccessoryCheckmark; } - (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath { [tableView cellForRowAtIndexPath:indexPath].accessoryType = UITableViewCellAccessoryNone; } 

Puede ver qué celdas se seleccionan mediante una llamada:

 NSArray *selectedCells = [self.tableView indexPathsForSelectedRows]; 

Jugar con

tableView.allowsMultipleSelection

Esto me ahorró horas de problemas. Encontrado aquí .

Las filas “Seleccionadas” en la aplicación Reloj son celdas con el tipo de accesorio UITableViewCellAccessoryCheckmark .

Los posibles pasos para lograr eso son:

  1. Almacene el estado verificado / no verificado en algún lugar para cada fila.
  2. En cellForRowAtIndexPath: método para la celda en la fila marcada, establezca la propiedad UITableViewCellAccessoryCheckmark de la UITableViewCellAccessoryCheckmark en UITableViewCellAccessoryCheckmark
  3. En cellForRowAtIndexPath: para la celda en la fila no marcada, establezca la propiedad UITableViewCellAccessoryNone de la UITableViewCellAccessoryNone en UITableViewCellAccessoryNone
  4. Cuando se selecciona (toca) la celda, anule la selección, invierta su estado verificado y vuelva a cargar la celda en esa ruta de índice

Si está utilizando Storyboards, simplemente haga clic en la vista de tabla y luego en el inspector de atributos en el panel derecho, establezca la propiedad de “selección” en “Selección múltiple”. Lo he verificado usando Xcode versión 8.2.1.