iphone - didSelectRowAtIndexPath devuelve IndexPath incorrecto
objective-c uitableview (2)
Me he encontrado con un error realmente desconcertante. ¡La primera fila de mi UITableView devuelve 1 y la segunda devuelve 0 en indexPath! ¿Cómo es eso posible?
En mi `- (void) viewDidLoad` todo sigue estando bien. Estoy destacando la primera fila con éxito con
currentRow = 0;
[tableView selectRowAtIndexPath:[NSIndexPath indexPathForRow:currentRow inSection:0]
animated:NO scrollPosition:UITableViewScrollPositionNone];
Tengo la variable currentRow
para rastrear qué fila está seleccionada (otro control cambia según cuál esté seleccionado actualmente).
Ahora en mi función de delegado `didDeselectRowAtIndexPath` tengo:
-(void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath {
...
NSLog(@"IndexPath: %@", [indexPath description]);
}
El registro muestra lo siguiente:
IndexPath: <NSIndexPath 0x79509d0> 2 indexes [0, 0]
cuando toco la segunda fila, e IndexPath: <NSIndexPath 0x79509d0> 2 indexes [0, 1]
cuando toco la primera fila.
No hay inserción de fila, eliminación o clasificación, etc., ni siquiera desplazarse. Es un estilo simple UITableView, agrupado, con 1 sección y 3 filas. ¿Qué podría estar causando esto?
Gracias por tu ayuda,
S
A pesar del título, el método sobrecargado es, de hecho, didDeselectRowAtIndexPath
, por lo que parece que el comportamiento es correcto: cuando se toca la 1ª fila, la 0ª queda deseleccionada, y viceversa.
Has implementado didDeselectRowAtIndexPath . Se disparará cuando la fila ya no esté seleccionada .
Cuando toca la segunda fila, ya no se selecciona la primera fila, por lo que se mostrará [0, 1].
Cuando toque la primera fila nuevamente, la segunda fila ya no estará seleccionada , por lo que se mostrará [0, 0].
Estos son totalmente esperados.
Implement didSelectRowAtIndexPath si necesita que responda cuando se selecciona la fila.
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
// ^
...
NSLog(@"IndexPath: %@", [indexPath description]);
}