2012-09-13 20 views
101

Ho appena installato Xcode 4.5 per il supporto iOS6, e ho visto una nuova icona chiamata 'Exit' nella mia Storyboard, elencata sotto i miei controller di visualizzazione insieme a 'First Responder' ecc. Un po 'di verde icona con l'etichetta "Esci".Xcode 4.5 Storyboard 'Exit'

Posso trovare qualsiasi cosa su di esso, o capire come può essere utilizzato.

Qualcuno sa qualcosa a riguardo, come funziona, a cosa serve?

+1

su una questione analoga ho postato questa risposta: http://stackoverflow.com/questions/12569316/does-anyone-know-what-the-new-exit-icon-is-used-for- when-editing-storyboards-usi/13437054 # 13437054 Aiuta a spiegare come usare la funzione di uscita (svolgimento) – Eric

risposta

72

Questo è chiamato "Segue srotolare". Purtroppo non c'è alcuna documentazione per questo finora, tranne un breve cenno su XCode 4.5 nuova lista caratteristiche che afferma:

segues relax potranno consentire la transizione a istanze esistenti di scene in uno storyboard

La buona notizia è che c'è una sessione del WWDC 2012 che spiega quelle creature (tra le altre cose).

È possibile effettuare il login a iOS Dev Center di Apple con i dettagli dell'account sviluppatore e quindi andare allo WWDC 2012 videos page e guardare "Adotta lo storyboard nella propria app" (è quinto dall'alto) La discussione sui seguiti di svolgimento inizia al momento 37: 20.


Aggiornamento: Ecco qualche informazione in più su questo argomento dalla documentazione di Apple

Un oggetto segnaposto chiamato Exit per rilassarsi seques. Per impostazione predefinita, quando un utente chiude una scena secondaria, il controller di visualizzazione per quella scena si svolge (o restituisce) sulla scena padre, ovvero la scena che originariamente è stata trasferita alla scena secondaria. Tuttavia, l'oggetto Exit consente a un controller di visualizzazione di svolgersi in una scena arbitraria.

(Da iOS6 Documentation Index> Generale> Guida introduttiva)

And here is a nice example of how you can implement one


Un altro aggiornamento:

Here is a technical note from Apple su questo argomento.

+3

OK, quindi come si usa? Ho provato a fare clic con il pulsante di controllo dall'oggetto di uscita nella parte inferiore di un viewcontroller, ma non si collegava a nulla. – shim

+4

Fondamentalmente devi definire un metodo per il tuo svolgimento e quindi connetterti da un elemento al pulsante 'exit' selezionando il metodo che desideri chiamare. Puoi trovare [un esempio qui] (http://www.techotopia.com/index.php/Using_Xcode_Storyboarding_ (iOS_6) #Unwinding_Storyboard_Segues) (Ho aggiornato anche la mia risposta per includere l'esempio) – Alladinian

+1

-1: Un sacco di parole , poche informazioni utili. Dopo aver letto su questo e averlo utilizzato nella mia app, ho scritto questa risposta che si spera sia più utile: http://stackoverflow.com/a/25829835/901641 – ArtOfWarfare

4

Vedere anche Cannot Connect Storyboard Unwind Segue che chiarisce i requisiti per rendere effettiva l'icona Esci.È necessario disporre, più in alto nella gerarchia View Controller, un metodo che è:

  1. contrassegnato come IBAction

  2. prende un parametro che è un UIStoryboardSegue *

Se sia quelli le condizioni sono soddisfatte, l'icona Esci la vedrà e ti permetterà di connetterti tramite il controllo-trascinamento da un pulsante nello stesso controller di visualizzazione.

ho anche ora pubblicato esempio più semplice del mondo qui:

https://github.com/mattneub/Programming-iOS-Book-Examples/tree/master/ch19p638presentedViewControllerStoryboard (fisso 12 Luglio 2013)

Questo dimostra come banalmente facile ora è Segue a e ritorno da un controller di vista presentati , a differenza di tutto il lavoro che hai dovuto fare in precedenza per passare le informazioni avanti e indietro (le cose nel modello con un delegato e un protocollo, che ora possono essere cancellate).

3

Basta aggiungere una leggera sottigliezza alla definizione dei requisiti che potrebbe essere di aiuto. Questo si basa sulla sperimentazione in Xcode 4.6. Ho scoperto che è specificamente e solo la dichiarazione (!) Del metodo che abilita la risposta di controllo-trascinamento desiderata da Xcode. Ecco cosa ho trovato per essere tutti i requisiti:

  • contrassegnato come IBAction
  • prende un parametro che è un UIStoryboardSegue *
  • È necessario avere un'azione dichiarato (ma non necessariamente implementato [cioè un metodo nel .M sezione di implementazione]).
  • Può essere nella dichiarazione dell'interfaccia di qualsiasi classe, anche nella sezione di interfaccia di un .M, ad eccezione della classe appdelegate. (Non ho visto alcuna dipendenza dalla sua posizione nella gerarchia del controller. Puoi aggiungere qualsiasi vecchio file e il sistema sembra aggregare tutti i metodi che hanno il parametro UIStoryboardSegue e visualizzarli nel menu dell'icona Esci.) Notare che il controllo Il menu di trascinamento mostra anche il tuo metodo se il metodo è nella classe della scena che stai manipolando nell'editor storyboard, ma apparirà senza due punti e non sembra attivare un'azione in fase di esecuzione.

Esempio: -(IBAction)anymethodname:(UIStoryboardSegue *)myvariable;

10

Immaginate di avere una sequenza di punti di vista nel vostro storyboard:

A -> ... -> Z

Si desidera avere un pulsante a vista Z che permette all'utente di andare tutti la via del ritorno a A.

Così che cosa dovete fare è dare l'idea che si desidera eseguire tutta la via d'uscita, in questo caso, A, un metodo di istanza che è contrassegnato come IBAction e prende in un unico parametro di tipo UIStoryboardSegue *. Il nome del metodo e la variabile non contano. Ciò che fai all'interno dell'implementazione non ha importanza, neanche.Ecco un esempio:

Obj-C:
In A 's Interface (non Z' s):

- (IBAction)cancelSignup:(UIStoryboardSegue *)unwindSegue; 

In A 's Attuazione (non Z' s):

- (IBAction)cancelSignup:(UIStoryboardSegue *)unwindSegue { 
    // Only "implemented" to satisfy a respondsToSelector: search. 
    // You can actually implement more stuff here, if you want, IE, if 
    // you need to reach out to a server to mention that this screen was 
    // returned to from a later screen. 
} 

Swift:
In 'Fonte s (non Z' A s):

@IBAction func cancelSignup(unwindSegue: UIStoryboardSegue) { 
    // Only "implemented" to satisfy a respondsToSelector: search. 
    // You can actually implement more stuff here, if you want, IE, if 
    // you need to reach out to a server to mention that this screen was 
    // returned to from a later screen. 
} 

Ora, all'interno del vostro storyboard, controllo trascinare da un elemento su Z (IE, un pulsante di annullamento) per Z s' Exit. Scorrerà tutte le viste più in alto nella gerarchia delle viste che hanno un IBAction che accetta solo un singolo UIStoryboardSegue * come azione ed elencale tra le quali scegliere.

Speriamo che questo fosse più semplice e utile delle risposte esistenti. Ho trovato che questo collegamento era particolarmente utile, quindi se c'è un dettaglio su cui sei ancora confuso dopo aver letto la mia risposta, forse questo può aiutarti (ho cercato di condensare tutte le informazioni utili di questo lungo articolo in una risposta breve): http://www.freelancemadscience.com/fmslabs_blog/2012/9/24/advanced-storyboard-techniques.html