2012-02-22 15 views
12

He configurado un UITableView utilizando un NSFetchedResultsController que muestra un número de UITableViewCells prototipo. He conectado un segue de empuje de mi UITableViewCell a mi DetailViewController.prepareForSegue no se llamó cuando se seleccionó la fila UITableView?

En mi TableViewController he implementado tanto:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
    NSLog(@"%s", __PRETTY_FUNCTION__); 
    [tableView deselectRowAtIndexPath:indexPath animated:YES]; 
} 

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
    NSLog(@"%s", __PRETTY_FUNCTION__); 
} 

Cuando ejecuto la aplicación y haga clic en una fila de la tableView mi aplicación sólo llama:

[TableViewController tableView:didSelectRowAtIndexPath:] 
[TableViewController tableView:didSelectRowAtIndexPath:] 
[TableViewController tableView:didSelectRowAtIndexPath:] 

Si elimino el segue y volver a conectarlo desde un UIBarButtonItem al DetailViewController y luego se llama correctamente al segue, ¿alguien puede pensar lo que me falta?

EDIT:

Agregado:

- (IBAction)tester:(id)sender { 
    [self performSegueWithIdentifier:@"SEGTEST" sender:nil]; 
} 

y conectarlo a un UIButtonBarItem que llama "tester" y funciona, simplemente no puedo conseguir que el fuego aún cuando enlazo desde el UITableViewCell al controlador.

+0

Me gusta mi respuesta a continuación. ¿Por qué no simplemente vincularlo desde ViewController a ViewController y llamarlo en el método didSelectCell? – Darren

+0

Podría hacer, supongo, tenía más curiosidad de por qué no estaba disparando. La única diferencia que puedo ver entre esto y una versión de trabajo que tengo es que esta versión usa Core Data y UIFetchedResultsController, aunque no veo cómo debería importar. – fuzzygoat

Respuesta

31

Después de un poco de excavación finalmente encontré que el identificador UITableViewCell se configuró incorrectamente como "CELL_ID" cuando debería haber sido "PLANTCELL_ID".

Som para cualquier otra persona que considera que la selección de un UITableViewCell en un UITableView no llama a la segue asociado, de verificación si el identificador de celda se establece correctamente, tanto en el guión gráfico y tableView:cellForRowAtIndexPath:.

6

Vuelva a conectar su segue del ViewController sí mismo y asígnele un nombre. Luego, en la llamada didSelectRow método

[self performSegueWithIdentifier:@"yourSegueName"];  

y ver si se dispara.

+0

En efecto, se activa, pero ¿cómo pasamos datos a la escena/vista instanciada? –

+0

Utiliza el método prepareForSegue. – Darren

Cuestiones relacionadas