ci sono, di fatto, due modi è possibile attivare un segue. Il primo è tramite un'azione su un elemento dell'interfaccia utente in Interface Builder, il secondo sta utilizzando performSegueWithIdentifier:sender:
nel codice. Dico 'efficace', perché sotto le coperte, quando la scena viene caricato dallo storyboard, un gestore di azione è configurato che alla fine chiama performSegueWithIdentifier:sender:
Quando performSegueWithIdentifier:sender:
viene chiamato, l'oggetto segue viene consegnato alla funzione prepareForSegue:sender:
del controller della vista.
Nel caso in cui l'segue è stata iniziata da un'azione su un elemento dell'interfaccia utente, il mittente sarà tale elemento UI (cioè se è un collegamento azione su una UIButton
allora il sender
sarà l'istanza UIButton
).
Se il seguito viene avviato dal codice che chiama il numero performSegueWithIdentifier:sender:
, lo sender
sarà qualsiasi oggetto passato come sender
. Questo potrebbe essere il tuo controller di visualizzazione, un pulsante, un array, qualsiasi cosa. Quindi sì, se si passa "Ciao Mondo" per performSegueWithIdentifier:sender:
come valore sender
allora questo sarà il sender
in prepareForSegue:sender:
In termini di ordine delle operazioni:
performSegueWithIdentifier:sender
è chiamato, sia per il codice o come risultato di un'azione su un elemento dell'interfaccia utente
- Se il controller di visualizzazione implementa
shouldPerformSegueWithIdentifier:sender:
, viene chiamata questa funzione. Se questa funzione restituisce false
poi la segue viene annullata
- L'oggetto controller oggetto segue e vista di destinazione vengono creati
- Se il controller della vista implementa
prepareForSegue:sender:
allora questa funzione viene chiamata.
- Una volta restituito
prepareForSegue:sender:
, il completamento viene completato.
Grazie per questo, mi ha salvato un po 'di backtracking - avevo bisogno di sapere se prepareForSegue sarebbe ancora essere chiamato in modo indipendente di controllare il valore di ritorno shouldPerformSegue. – MandisaW