2012-06-14 20 views
17

Sto creando un'app utilizzando l'SDK di iOS 5. Sono riuscito a spingere le viste usando i Segues dello storyboard, ma non riesco a trovare il modo corretto di visualizzare la vista corrente e tornare a quella precedente.Apre la visualizzazione corrente utilizzando Segues/Storyboard su iOS 5

Non sto utilizzando alcun navigatore di navigazione (l'app non ha barre superiori o inferiori).

Non penso che l'utilizzo di modal o push segue l'altra soluzione sarebbe la soluzione in quanto crea un nuovo controller.

Devo utilizzare una Segue personalizzata con l'animazione opposta e la cancellazione della vista alla fine? O c'è un modo migliore?

risposta

24

Si potrebbe provare a chiamare [self dismissViewControllerAnimated:YES completion:nil]; dal controller che si desidera eliminare (se il controller è stato premuto, o visualizzato modally).

Ecco la relativa documentazione: UIViewController Class Reference

La presentazione controller di vista è responsabile per respingere il controller della vista ha presentato. Se si chiama questo metodo sul controller della vista presentato, esso inoltra automaticamente il messaggio al controller della vista che presenta.

+0

Esattamente quello di cui avevo bisogno, grazie. – Jukurrpa

+16

Nota: questo _non_ funziona con i controller di navigazione (da inserire). –

+0

Grande;). Hai reso la mia giornata :). Grazie – androniennn

53

Gli storyboard in iOS 5 non forniscono un modo "no-code" per tornare da un seguito: è qualcosa che è necessario implementare.

Se si utilizzano follower "push" (che richiedono un controller di navigazione), utilizzare il metodo popViewControllerAnimated: del controller di navigazione per annullare l'ultimo push seguito. (O altri metodi per annullare più, consultare la documentazione UINavigationController.)

Se si utilizza "modale" segues, chiamare dismissViewControllerAnimated:completion: sul controller della vista, che ha presentato il controller della vista corrente (che si può ottenere dalla sua proprietà presentingViewController).


Aggiornamento: In iOS 6 e versioni successive c'è segues di svolgimento per andare "indietro" in uno storyboard. Non è ancora una soluzione senza codice e non dovrebbe esserlo, perché è necessario essere in grado di fare cose come distinguere tra le uscite "Fatto" e "Annulla" da un controller di visualizzazione modale. Ma ti permette di mettere più del flusso semantico della tua app nello storyboard. Apple ha un tech note that describes them in detail e sono anche coperti in the video from WWDC 2012 Session 407.

16

Giusto per chiarire.

Nella classe che è stata spinto. Collega semplicemente quanto segue e il controller e la vista verranno estratti.

[self.navigationController popViewControllerAnimated:YES]; 
3

Creare il tipo di Segmento "Personalizzato" sulla tua tabella degli itinerari. Questo può essere da un pulsante. Creare una nuova classe UIStoryboardSegue denominata "popSegue" Nel file popSegue.m aggiungere quanto segue;

-(void)perform{ 
    UIViewController *sourceViewContreoller = [self sourceViewController]; 
    [sourceViewContreoller.navigationController popViewControllerAnimated:YES]; 
} 

-Nell'editor di storyboard.

-Selezionare la segue e cambiare la classe Segue a "popSegue"

-Imposta l'Identifier a "popSegue"

Fatto!

È possibile utilizzare la stessa classe "popSegue" per tutto il progetto.

Spero che questo aiuti

2

sto usando Xcode 5 anche ed ecco come si fa. In primo luogo, nel file di codice della vista che ha spinto l'altro, creare un metodo IBAction nel file .h come questo:

- (IBAction)exitToHere:(UIStoryboardPopoverSegue *)segue sender:(id)sender; 

Then in the .m file add this: 

- (IBAction)exitToHere:(UIStoryboardPopoverSegue *)segue sender:(id)sender { 

} 

è possibile aggiungere qualsiasi codice di pulizia che si desidera eseguire in questo metodo. Quindi vai al tuo storyboard e seleziona la visualizzazione spinto. Presumo che tu abbia una sorta di pulsante sulla vista che l'utente tocchi per segnalare che ha finito. Fare clic su quel pulsante, tenere premuto il tasto e trascinare nella casella verde sotto la vista che è l'uscita. Rilascia il pulsante del mouse, ma continua a tenere premuto il tasto. Apparirà un popup e il tuo metodo verrà visualizzato nell'elenco. Seleziona quel metodo. Ora, quando l'utente fa clic sul pulsante, la vista verrà visualizzata e verrà restituito il metodo di avvio.

Problemi correlati