2012-01-02 16 views
8

Me gustaría seleccionar una celda en un tableView. Está funcionando correctamente con este código, pero una vez seleccionado programáticamente, no desencadena un evento didSelectRowAtIndexPath. ¿Cómo puedo dispararlo?evento didSelectRowAtIndexPath no se activó al seleccionar la fila programáticamente

NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0]; 
[self.mainTable selectRowAtIndexPath:indexPath animated:NO scrollPosition:UITableViewScrollPositionNone]; 

Respuesta

22

que está funcionando como se documenta:

llamada a este método no causa el delegado para recibir un mensaje tableView:willSelectRowAtIndexPath: o tableView:didSelectRowAtIndexPath:, ni será enviar notificaciones a los observadores UITableViewSelectionDidChangeNotification.

llamada usted mismo después de la selección de su celular:

NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0]; 

[self tableView:self.mainTable willSelectRowAtIndexPath:indexPath]; 
[self.mainTable selectRowAtIndexPath:indexPath animated:NO scrollPosition:UITableViewScrollPositionNone]; 
[self tableView:self.mainTable didSelectRowAtIndexPath:indexPath]; 
+0

de trabajo, gracias por la ayuda – Jaume

+0

para futuros viajeros: Esto es una gran explicación de por qué esto no funciona, pero creo que esto es una mayor Solución completa: http://stackoverflow.com/questions/2305781/iphone-didselectrowatindexpath-not-invoked – kbpontius

Cuestiones relacionadas