uitableview ios5 didselectrowatindexpath

UITableView didSelectRowAtIndexPath no se llama en el primer toque



ios5 (7)

Agregue este código en su método viewDidLoad

[self.tableView reloadData]

Estoy teniendo un problema con el comando didSelectRowAtIndexPath de UITableView de ios 5, 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 a didSelectRowAtIndexPath, pero pasa la última indexPath.

Ya he configurado 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); }


Es posible que haya implementado (observe la Deselección ): didDeselectRowAtIndexPath

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

SOLUCIÓN: didSelectRowAtIndexPath

Sí, se ven muy similares, y no ayuda que 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) {}


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 implementas el DEselect

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

Esto hará que el primer clic no funcione, pero luego de hacer clic y cualquier otra celda funcionará como se esperaba.

Solución : asegúrese de prestar atención y usar didSelectRowAtIndexPath

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

Espero que ayude y como mencione antes, esto fue resuelto por "Anna Karenina".


Por favor, conecte el delegado de Xib a los propietarios de archivos. Entonces inténtalo funcionará.


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

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


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

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { selectedData = data[indexPath.row] performSegue(withIdentifier: "Detail", sender: self) }


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