tutorial - ¿Cómo eliminar el color del estilo de selección de celda cuando una vez más se muestra la vista de tabla en iphone?
uitableview tutorial swift 4 (5)
Soy nuevo en el desarrollo de iPhone. Creé una tabla que muestra mi contenido. Si selecciono una fila, el estado se resalta en color azul y se desplaza a otra vista. Si hago clic en el botón Atrás, vuelve a la tabla que muestra la celda en la que se hizo clic. en color azul, quiero eliminar el color resaltado en la tabla mientras navego de regreso a su vista. ¿Cómo puedo hacer eso? Gracias.
Creo que la forma generalmente aceptada de hacerlo es deseleccionar la celda mientras navega a la nueva vista. En lugar de viewWillAppear, use el método de delegado de vista de tabla didSelectRowAtIndexPath y la misma deselectRowAtIndexPath que estaba usando.
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)newIndexPath{
[tableView deselectRowAtIndexPath:newIndexPath animated:YES];
}
(y generalmente aceptado, me refiero a "cosas que veo con más frecuencia en el código de ejemplo". Depende de cómo se vea al final)
Finalmente lo conseguí al implementar esto en mi clase de vista de tabla.
- (void)viewWillAppear:(BOOL)animated
{
NSIndexPath *tableSelection = [self.tableView indexPathForSelectedRow];
[self.tableView deselectRowAtIndexPath:tableSelection animated:NO];
}
La implementación predeterminada de viewDidAppear:
debe hacerse cargo de eso por usted. Si anuló ese método en su controlador de vista de tabla, no olvide llamar [super viewDidAppear:animated]
en su método de anulación.
Lo estás haciendo mal, en el método cellForRowAtIndexPath. utilizar esta
[cell setSelectionStyle:UITableViewCellSelectionStyleNone];
En tu UITableViewCells
Esta sería la forma correcta si quisiera que la celda no se destaque ni en la selección toque ni en volver a ver. Si solo desea que la celda no esté seleccionada al volver a ver, las otras soluciones son más adecuadas.
Para Swift 3:
override func viewWillDisappear(_ animated: Bool) {
if let indexPath = self.tableview.indexPathForSelectedRow {
tableview.deselectRow(at: indexPath, animated: true)
}
}