2012-11-20 12 views
5

Ho uno storyboard con i passaggi da una cella di tabella. Voglio impostare alcune proprietà con alcuni dati quando una riga viene selezionata in modo faccio la seguente:Storyboard segue viene chiamato prima di UITableView'sSelectRow

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    [[ProperyManager sharedPropertyManager]setSelectedRow:[verseIds objectAtIndex:indexPath.row]]; 
    [[ProperyManager sharedPropertyManager]setID:[poemIDs objectAtIndex:indexPath.row]]; 
    [[ProperyManager sharedPropertyManager]setRowToReturn:[NSString stringWithFormat:@"%i",indexPath.row]]; 


} 

Il problema è che i metodi del ciclo di vita View Controller (viewWillAppear ecc) del controller di vista di destinazione vengono chiamati prima della metodo didSelectRow sopra, perché il seguito spinge la vista prima dell'esecuzione del metodo delegato.

Come posso aggirare questo?

risposta

14

Non creare il Segue dalla cella al nuovo VC, invece impostare il Segue dal vecchio VC al nuovo VC e fornire al seguito un identificatore.

Poi entro

didSelectRowAtIndexPath è possibile chiamare

[self performSegueWithIdentifier:@"Segue" sender:self]

+0

grazie che ha reso la mia giornata –

14

risposta di Rawkode è una buona soluzione - un alternativa è che, in prepareForSegue:, è possibile accedere alla riga selezionata della vista tabella (la L'argomento sender sarà la cella di visualizzazione tabella, è quindi possibile eseguire [self.tableView indexPathForCell:(UITableViewCell*)sender] per ottenere il percorso dell'indice) e impostare quello che ti serve a quel punto.

+0

grazie la tua risposta mi ha aiutato a capire qualcos'altro e per saperne di più :) –

+0

Jrturton perfetto. Questo era esattamente quello che stavo cercando ... –