2014-12-04 24 views
10

Ho letto che i passaggi di svolgimento sono controllati in Xcode 6. Sto usando Xcode 6.1.1 e uso swift.Segue di riavvolgimento in Xcode 6.1.1 con storyboard

Io uso il pulsante "Indietro" che viene inserito dal controller di navigazione. Quindi non posso trascinare il cursore sull'icona di uscita. Inoltre non posso trascinare dall'icona viewController per uscire dall'icona.

È un bug? Oppure mi manca qualche conoscenza fondamentale su come usare unwind segue. Come posso impostare i segui dello svolgimento dallo storyboard?

risposta

3

Funzionante. Se si sta presentando da un NavigationController o TabBarController (incerto sul TabBarController), è necessario sottoclasse il controller di navigazione e aggiungere i successivi allo svolgimento. Nello storyboard non dimenticare di cambiare la classe del tuo controller di navigazione. La mia gerarchia di visualizzazione era NavController -> TableController -> DetailController. Dopo aver aggiunto il metodo alla classe NavBar personalizzata, aggiungilo al VC a cui vuoi tornare. Sarai quindi in grado di fare clic tenendo premuto il tasto CTRL per uscire. Considero questo un bug, dato che una volta collegato, sono stato in grado di eliminare la sottoclasse e tornare a Stock NavigationController e funzionava ancora.

+5

L'ho provato senza classe di navigazione personalizzataController e funzionava ancora. Apparentemente, aggiungendo '@IBAction func unwindSegue (segue: UIStoryboardSegue) { }' sul controller della vista di destinazione abilita il trascinamento per uscire dall'icona –

+0

Potete per favore provarlo anche tu? Se funziona, sarebbe meglio scriverlo come risposta. –

+0

Mio male, pensavo che lo stavi già facendo. Devi sempre dichiarare lo svolgimento nel VC di destinazione, non nel VC corrente, in modo da fare clic tenendo premuto il tasto Ctrl per uscire. Ma per me, ho dovuto sottoclasse il mio controller di navigazione per trascinare in IB. E dichiararlo nel VC di destinazione e in NavVc personalizzato. –

9

voglio fornire una risposta dettagliata:

Per eseguire una segue rilassarsi, andare al controller della vista che si desidera Segue da e per aggiungere la funzione seguente; (Il nome può cambiare ovviamente)

@IBAction func unwindToMainMenu(segue: UIStoryboardSegue) { 

} 

Una volta aggiunto questa funzione, si sarà in grado di vedere questa funzione di svolgimento da qualsiasi controller di vista sul vostro storyboard. Basta fare clic destro sull'icona di uscita nella parte superiore di qualsiasi controller di visualizzazione. exit icon right click

Se si desidera eseguire lo svolgimento con un pulsante, è possibile premere il tasto CTRL + trascinamento dal pulsante per uscire dall'icona e scegliere la funzione unwindSegue. Fatto!

Unwind with Button

Se si desidera eseguire rilassarsi di programmazione, quindi cntrl + trascinamento dall'icona viewController all'icona uscita e scegliere la funzione di svolgimento.

enter image description here

Successivamente, aprire la Struttura documento e fare clic sul segue svolgimento.

enter image description here

Vai Attributi all'interno Utilità e dare un identificatore al vostro segue rilassarsi.

enter image description here

Infine, chiamare la funzione performSegueWithIdentifier quanto segue;

self.performSegueWithIdentifier("goToMainMenu", sender: self) 

Spero che questo aiuti!

+0

Fantastico :) Ottimo lavoro. – Mariam

1

Funziona su Xcode 6.2. Il mio caso è ViewController A che presenta B modally.Rilassatevi operazioni di messa sotto:

  1. In, scrivere un IBAction

    -(IBAction)unwindFromB:(UIStoryboardSegue *) unwindSegue 
    { 
        ViewControllerB *vc = [unwindSegue sourceViewController]; 
        // get whatever data you want to pass back from B 
    } 
    
  2. In storyboard, trovare B e destro del mouse sul pulsante 'Exit' in alto, poi il 'presentare Segue' menù elencherà unwindFromB che avete appena creato in un

  3. Fare clic sul piccolo segno '+' a destra e un collegamento di nuovo a B, selezionare 'manuale'

  4. Non dimenticare di impostare l'identificatore dei processi di svolgimento se è necessario chiamarlo a livello di programmazione.

0

ho scoperto che non potevo trascinare dal UITableViewCell all'oggetto Exit sul controller Visualizza sulla Storyboard.

Soluzione era prima aggiungere un IBAction appropriato nel codice. Una volta che IBAction esiste, il target di trascinamento si illuminerà.

-(IBAction)prepareForUnwind:(UIStoryboardSegue *)segue { 

}