2012-02-22 26 views
12

Ho configurato un UITableView utilizzando un NSFetchedResultsController che visualizza un numero di prototipi UITableViewCells. Ho collegato un push segue dal mio UITableViewCell al mio DetailViewController.prepareForSegue non viene chiamato quando viene selezionata la riga UITableView?

Nel mio TableViewController ho implementato sia:

- (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__); 
} 

Quando eseguo l'applicazione e fare clic su una riga nella tableView mia applicazione chiama solo:

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

Se cancello la segue e rewire forma un UIBarButtonItem su DetailViewController, quindi il seguito viene chiamato correttamente, qualcuno può pensare a ciò che mi manca?

EDIT:

Aggiunto:

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

e collegato a quello di un'UIButtonBarItem che ha chiamato "tester" e funziona, non riesco proprio a farlo al fuoco ancora quando mi collego dal UITableViewCell al controller.

+0

Come la mia risposta qui sotto. Perché non collegarlo semplicemente da ViewController a ViewController e chiamarlo nel metodo didSelectCell? – Darren

+0

Potrei immaginarlo, ero più curioso del motivo per cui non sparava. L'unica differenza che posso vedere tra questo e una versione funzionante che ho è che questa versione utilizza Core Data e un UIFetchedResultsController, anche se non riesco a vedere come dovrebbe essere importante. – fuzzygoat

risposta

31

Dopo un po 'di scavo ho scoperto che l'identificatore UITableViewCell non era impostato correttamente su "CELL_ID" quando avrebbe dovuto essere "PLANTCELL_ID".

Som per chiunque altro che trova che la selezione di un UITableViewCell in un UITableView non chiama la segue associato, di controllo se l'identificativo cella è impostato correttamente sia nel storyboard e tableView:cellForRowAtIndexPath:.

6

Rewire i tuoi passi dallo ViewController e dargli un nome. Poi nel didSelectRow chiamata di metodo

[self performSegueWithIdentifier:@"yourSegueName"];  

e vedere se si spara.

+0

Spara, ma come passiamo i dati alla scena/vista istanziata. –

+0

Si utilizza il metodo prepareForSegue. – Darren

Problemi correlati