Apple raccomanda di utilizzare performSegueWithIdentifier:sender:someObject
per eseguire programmazione segues. Ci sono almeno un paio di vantaggi a farlo in questo modo:
Meno del proprio codice significa che stai lasciando il quadro non più del lavoro. Se Apple presenta un nuovo effetto visivo super cool per i follower, o migliora le prestazioni, o corregge un bug in qualche futura versione di iOS, la tua app può ottenerlo gratuitamente. E ogni linea di codice che scrivi per far funzionare il framework potrebbe farti aumentare le tue possibilità di scrivere bug.
Altro in IB può significare più facile da cambiare. Se decidi di voler cambiare tutti i tuoi follower in passate modali o alcuni tipi di sequenze personalizzate in cui esegui il tuo fantastico effetto visivo, puoi selezionarli tutti in IB e cambiare il tipo di seguito con un solo clic invece di cercare in giro nel tuo codice.
Inoltre, se si utilizza il primo o il secondo metodo, spingendo un controller della vista, al fine di andare "indietro" ad un precedente controller di vista non funziona il modo in cui gli utenti si aspettano. Quando si preme un SongViewController
, è aggiunto alla fine dello stack di navigazione:
LocationViewController -> SongViewController
Se poi spingere LocationViewController
di nuovo di andare "indietro":
LocationViewController -> SongViewController -> LocationViewController
Se l'utente tocca il pulsante Indietro la barra di navigazione, torneranno dalla vista posizione alla vista brano alla vista posizione. (Inoltre, se continui a farlo, ogni "indietro" e "avanti" si aggiungerà a una sempre crescente catena di controller di visualizzazione, il che potrebbe portare ad altri problemi.)
Invece, dovresti lasciare che il controller di navigazione gestisca tornare indietro.Mette un pulsante nella barra di navigazione a tale scopo, che dovrebbe gestire la maggior parte dei casi d'uso. Se è necessario eseguire il controllo personale per tornare indietro, non è possibile farlo in IB con iOS 5, ma è possibile farlo a livello di programmazione con il metodo popViewControllerAnimated:
del controller di navigazione.
personalmente, dal momento che stai usando uno Storyboard e prosegue, quindi # 2 è un modo più bello di farlo. –
può # 1 essere utile se si deve premere un viewcontroller che non può avere un seguito? per esempio spingere il controllore di vista dal pulsante di apertura delle annotazioni di mapview. – kappa
Tutto può avere un seguito. Non tutto può avere un * automatico * seguito interamente realizzato in IB (come pulsanti e celle di tabella). Ma è comunque possibile creare un seguito in IB a partire da un controller di visualizzazione stesso e utilizzare # 2 per eseguirlo; questo è esattamente ciò che faresti per i pulsanti di callout della mappa. – rickster