2011-02-08 14 views
21

Actualmente trabajo en el delegado didSelectRowAtIndexPath y noté que mi fila aún está "seleccionada" después de volver al controlador de vista más tarde.Cómo deseleccionar una UITableViewCell después de haber hecho alguna acción usando didSelectRowAtIndexPath?

¿Cómo puedo deseleccionar esta fila dentro del delegado?

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
    //do logic and ... it remains selected in the view? 
} 

Respuesta

50
[tableView deselectRowAtIndexPath:indexPath animated:YES]; 
37

Por lo general, que desea anular la selección de la fila cuando el controlador de vista aparece de nuevo:

- (void)viewDidAppear:(BOOL)animated 
{ 
    [super viewDidAppear:animated]; 

    [self.tableView deselectRowAtIndexPath:[self.tableView indexPathForSelectedRow] animated:YES]; 
} 

Eso es lo UITableViewController hace implícitamente, y anima el proceso de anulación de la selección después de que el controlador de vista aparece de nuevo es una sugerencia útil para el usuario sobre qué celda seleccionaron previamente.

+0

Creo que es mejor usar 'viewWillAppear:' para que el usuario no vea brevemente la fila seleccionada – doctorBroctor

Cuestiones relacionadas