Domanda

Ho un'app per iPhone che sto attualmente creando in XCode 4.3 con Storyboard.Ho un controller di visualizzazione "root" con due (2) sequenze su un controller di visualizzazione contenente un UIWebView.Voglio essere in grado di identificare il segue (ho già impostato identificatori univoci per entrambi i segue) in modo da poter "spingere" il contenuto corretto su UIWebView, in base al quale segue è stato attivato nel controller della vista "root".

Penso di dover utilizzare il metodo "prepareForSegue", ma non so dove andrebbe.Dove posso scoprire come gestire due segue che vanno allo stesso controller di visualizzazione?(Ho cercato su Google e non ho trovato nulla di appropriato alla mia situazione).

Ecco il codice che sto utilizzando:

-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    if ([segue.identifier isEqualToString:@"helpSegue"]) {
        NSLog(@"helpSegue");
    }
    else if ([segue.identifier isEqualToString:@"reportSegue"]) {
        NSLog(@"reportSegue");
    }
}
È stato utile?

Soluzione

Non chiamerai -prepareForSegue:sender:, lo implementerai nel controller della vista.Nell'override di quel metodo, puoi controllare i segue identifier proprietà (il segue viene passato come parametro):

if ([segue.identifier isEqualToString:@"Segue Numero Uno"]) {
    // do something here
}

Ciò ti consente di intraprendere una sorta di azione a seconda di quale segue sta causando la transizione.Puoi impostare l'identificatore per ogni segue nell'editor dello storyboard.

Aggiornamento: In base al codice che hai fornito nel tuo commento (che ho aggiunto alla tua domanda), ora hai l'idea giusta.A questo punto è solo una questione di buon vecchio debugging.Alcune cose da controllare:

  • Il controller della vista nel tuo storyboard (ad es.quello a cui portano i segues in questione) impostato come istanza della classe che lo implementa -prepareForSegue:sender:?Controlla il tipo di controller nello storyboard.

  • Fai le stringhe che usi nel tuo codice esattamente corrispondono agli identificatori che hai impostato per i tuoi segui nello storyboard?Contano le maiuscole, l'ortografia, la punteggiatura e gli spazi bianchi.

  • È tuo -prepareForSegue:sender: metodo chiamato?Inserisci un punto di interruzione lì ed esegui il debug.Se viene chiamato, qual è l'identificatore per il file segue è passato?Se non viene chiamato, il controller della vista nello storyboard non ha la classe corretta.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top