UITableView didSelectRowAtIndexPath no se llama en el primer toque

Tengo un problema con didSelectRowAtIndexPath de ios 5 de UITableView, que es correcto en ios 4.

La primera vez que toco cualquier fila de la tabla, no se llama al método. Una vez que selecciono otra fila, llama al didSelectRowAtIndexPath, pero pasa el último indexPath.

Ya configuré tableView.delegate y puede ejecutarse correctamente en ios4.

MainView.xib
UITabBarController
     --UINavigationController
         --**UITableViewController**

¿Alguna sugerencia?

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.tableView.delegate = self;
    self.tableView.dataSource = self;
}

#pragma mark - Table view data source

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return 10;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    }
    cell.textLabel.text = [[NSString alloc]initWithFormat:@"%d",indexPath.row];
    return cell;
}

#pragma mark - Table view delegate

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSLog(@"%d",indexPath.row);
}

preguntado el 01 de febrero de 12 a las 14:02

¿Puedes publicar el código? ¿Está seguro de que no ha implementado didDeselectRowAtIndexPath en su lugar? -

No implementé deseleccionar. Gracias. -

@AnnaKarenina: encontré este problema esta mañana, Anna Karenina me ha salvado el pellejo nuevamente, gracias :) -

¿Este problema está resuelto? ¿Puede responder (la suya) la pregunta para que podamos cerrarla? -

7 Respuestas

Es posible que haya implementado (observe el Deseleccionar): didDeselectRowAtIndexPath

... de ahí el disparador al seleccionar una nueva celda que anula la selección de la primera, y registrando indexPath como la primera también.

SOLUCIÓN: didSelectRowAtIndexPath

sí, se ven muy similares, y eso no ayuda didDeselectRowAtIndexPath es el primer método que el autocompletado de Xcode selecciona la mayor parte del tiempo.

CÓDIGO COMPLETO:

// right
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {}

Respondido el 27 de junio de 16 a las 02:06

¡Gracias! ¡Me preguntaba por qué mi vista de alerta mostraba los detalles de la última fila seleccionada! - Rajeev Bhatia

Vine aquí por un problema muy similar que estaba teniendo con mi proyecto Swift de iOS8. Eso es exactamente lo que hice. ¡Gracias! - Jase

Ayudaría un poco si tu Seleccionar y deseleccionar. Se necesita un poco de mirada para verlo. - gjpc

Gracias, 30 minutos desperdiciados; aunque podría haber sido más - Fouad

Por favor, intente cambiar su -viewDidLoad al código siguiente (inserte la última línea). Cuéntame los resultados.

- (void)viewDidLoad
{
    [super viewDidLoad];

    self.tableView.delegate = self;
    self.tableView.dataSource = self;
    [self.tableView reloadData];
}

Respondido el 25 de enero de 13 a las 17:01

No estoy seguro de si esto ha sido respondido, pero estaba corriendo con este problema y al igual que "Anna Karenina" comentó anteriormente. Asegúrese de prestar mucha atención a los detalles.

Esto se debe a que implementaste el DEselect

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

Esto hará que el primer clic no funcione, pero los siguientes clics y cualquier otra celda funcionará como se esperaba.

solución: asegúrese de prestar atención y utilizar didSelectRowAtIndexPath

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

Espero que eso ayude y, como mencioné antes, esto fue resuelto por "Anna Karenina".

Respondido 04 Jul 14, 08:07

Conecte el delegado de Xib a los propietarios de archivos. Entonces inténtelo, funcionará.

Respondido el 27 de diciembre de 12 a las 10:12

Agregue este código en su viewDidLoad Método

[self.tableView reloadData]

respondido 08 mar '13, 16:03

Tenía un UIGestureRecognizer en la vista dentro del guión gráfico. Tuve que quitarlo y funcionó normalmente.

contestado el 02 de mayo de 16 a las 15:05

También tuve este problema al pasar datos a otro VC. Lo resolví cambiando a una transición manual de la Tabla VC al VC de detalle.

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        selectedData = data[indexPath.row]

        performSegue(withIdentifier: "Detail", sender: self)
}

respondido 01 nov., 16:00

¿Cómo debería resolverlo si se llama al método didselect? por favor ayúdame a entender más gracias :) - ahmedHegazi

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.