Sono molto confuso tra "eseguire segue con identificatore" e "prepararsi per segue" ... ciò che queste funzioni fanno e come funzionano?Differenza tra eseguire segue con identificatore e prepararsi per segue
risposta
prepareForSegue prepara i dati da passare tra i controller della vista dove, come performSegue con identificatore, consente effettivamente il passaggio.
Swift2:
performSegueWithIdentifier(_:sender:)
Swift3:
performSegue(withIdentifier: String, sender: Any?)
Apps in genere non hanno bisogno di innescare segues di programmazione. Se è necessario , è possibile chiamare questo metodo per attivare un seguito per un'azione che non può essere espressa in un file storyboard, ad esempio una transizione tra scene in storyboard diversi.
In genere, un evento viene attivato da un'azione dell'utente, ad esempio facendo clic sul pulsante . In Interface Builder, configurare un oggetto, ad esempio un controllo incorporato nella gerarchia di visualizzazione del controller della vista, per attivare il seguito .
Swift2:
prepareForSegue(_:sender:)
Swift3:
prepare(for: NSStoryboardSegue, sender: Any?)
L'implementazione predefinita di questo metodo non fa nulla; è possibile modificare lo per passare i dati rilevanti al nuovo controller di visualizzazione o al controller della finestra , in base al contesto del seguito. L'oggetto seguito descrive la transizione e include riferimenti a entrambi i controller coinvolti nel seguito.
I successivi possono essere attivati da più origini, quindi utilizzare le informazioni nei parametri follow e mittente per distinguere tra i diversi percorsi logici nell'app. Ad esempio, se il seguito proviene da una vista tabella , il parametro del mittente identifica la cella su cui si è fatto clic sull'utente . È possibile utilizzare tali informazioni per impostare i dati sul controller della vista di destinazione .
Eseguire segue, in realtà cambia l'opinione che l'utente vede. La funzione Esegui segue chiamerà la funzione di preparazione dei passi prima che cambi la vista; così, in genere, gli sviluppatori passeranno le informazioni al prossimo controller all'interno di quella funzione prima che questo venga eseguito.
performSegueWithIdentifier come si dice, fa una transizione dal tuo attuale UIViewController
al Segue collegati UIViewController
prepareForSegue consentono di fare alcuni lavori aggiuntivi prima transizione accada
performSegueWithIdentifier
solo racconta la viewController ciò che segue si' Mi piace seguire a. Puoi dare i nomi dei tuoi segui in Interface Builder.
[self performSegueWithIdentifier:@"GoToAnotherViewController" sender:self];
Si può avere un ViewController con diversi segues o si può avere qualcosa dagli attuali ViewController il destinationVC "ha bisogno di sapere" quando si segue, così you'd use prepareForSegue.
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
// Make sure your segue name in storyboard is the same as this line
if ([[segue identifier] isEqualToString:@"GoToAnotherViewController"])
{
// Get reference to the destination view controller
YourViewController *vc = [segue destinationViewController];
// Pass any objects to the view controller here, like...
[vc setMyObjectHere:object];
}
}
Swift 3 sintassi è: performSegue(withIdentifier: String, sender: Any?)
. È possibile farlo se si desidera solo per portare il viewController senza alcun pre - configurazione o conditons
È anche possibile fare prepare(for: NSStoryboardSegue, sender: Any?)
che dà aggiuntivi caratteristiche:
- passaggio di dati in più alla vistaController
- fare una dichiarazione if else in modo che il passaggio basato ad esempio passando schermata di login o registrati schermo
fondamentalmente: prepareForSegue prepara i dati al passato tra controllori vista dove come performSegue permette in realtà l'interruttore accada
C'è una differenza che non ho visto nelle risposte qui e può aiutare a chiarire.
Il performSegueWithIdentifier autorizza il codice mentre il prepareForSegue consenta all 'utente, ha bisogno di un azione dell'utente.
Supponiamo di avere un quiz con alcune domande e l'utente ha 30 secondi per rispondere a ciascuna di esse.
Quando l'utente fa clic su una delle risposte, verrà chiamato prepareForSegue. L'utente è responsabile qui.
D'altra parte, se l'utente non fa clic su nulla, ma i 30 secondi scadono, il TUO CODICE dovrebbe 'eseguire il seguito' automaticamente.
Ecco quando è necessario il performSegueWithIdentifier per eseguire il processo in modo programmatico. Il tuo codice è direttamente responsabile qui.
Spero che aiuti.
- 1. Swift eseguire Segue
- 2. Segue tra due controllori vista
- 3. Come eseguire Segue in AppDelegate?
- 4. Segue srotolare per UINavigationController
- 5. Eseguire Segue programmaticamente senza collegamento a pulsante?
- 6. Segue non funziona con iOS6
- 7. Segue tra ViewControllers senza controllo del trigger?
- 8. modale segue nessuna transizione
- 9. iOS 5 segue implementazione
- 10. Animazione Segue personalizzata
- 11. Quale modello segue .gitignore?
- 12. Push segue senza animazione
- 13. segue manuale con SWRevealViewController a Swift
- 14. Segue non chiama prepareForSegue
- 15. Hazelcast segue JSR-107
- 16. Quale modello segue Hibernate?
- 17. Utilizzo manuale di Segue
- 18. Spring RestTemplate segue reindirizzamento con cookie
- 19. E 'sicuro al 100% fare quanto segue?
- 20. Swift - Segue su Dynamic TableCell
- 21. Segue di incorporamento - iOS 5
- 22. Impossibile connettersi Storyboard Svela Segue
- 23. segue: destinazione View Controller stranezza
- 24. Laravel segue il proxy inverso
- 25. Segue ad un altro storyboard?
- 26. Eseguire un segue genitore dal controller vista incorporata
- 27. Storyboard Segue a più viste?
- 28. Javascript per abbinare sottostringa e striscia tutto quello che segue
- 29. Quale ordine di migrazione segue il Sud tra diverse app?
- 30. Regex rimuovere tutto ciò che segue: (compreso :)
Ho un campo di testo in "SecondViewController (YourViewController)" e voglio cambiare il testo del segnaposto e del frame. Come posso farlo? qualsiasi aiuto per favore. –