iphone objective-c uitableview didselectrowatindexpath nsindexpath

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]); }