2014-12-04 16 views
10

Ich habe gelesen, dass Abwicklungssegmente in Xcode 6 abgehört werden. Ich benutze Xcode 6.1.1 und ich benutze swift.Unwind Segue in Xcode 6.1.1 mit Storyboard

Ich benutze die "Zurück" -Taste, die vom Navigationscontroller gesetzt wird. Also kann ich nicht Strg ziehen, um zum Beenden-Symbol zu gelangen. Außerdem kann ich vom viewController-Icon auch nicht zum Icon ziehen.

Ist das ein Fehler? Oder ich vermisse etwas grundlegendes Wissen darüber, wie man above segue verwendet. Wie kann ich Abwicklungsübergänge vom Storyboard einstellen?

Antwort

3

Es funktioniert. Wenn Sie von einem NavigationController oder TabBarController präsentieren (sich nicht sicher über den TabBarController), müssen Sie den Navigationscontroller von der Unterklasse ableiten und dem Abwicklungssegment diesen hinzufügen. Vergessen Sie im Storyboard nicht, die Klasse Ihres Navigationscontrollers zu ändern. Meine Sichthierarchie war NavController -> TableController -> DetailController. Nachdem Sie der benutzerdefinierten NavBar-Klasse eine Methode hinzugefügt haben, fügen Sie sie der VC hinzu, an die Sie zurückgeben möchten. Sie können dann Strg-ziehen, um zu beenden. Ich betrachte dies als einen Fehler, da, sobald es angeschlossen ist, ich die Unterklasse löschen und zu NavigationController zurückkehren konnte und es funktionierte noch.

+5

Ich versuchte es ohne benutzerdefinierte navigationController-Klasse und funktionierte immer noch. Anscheinend ermöglicht das Hinzufügen von '@IBAction func unwindSegue (segue: UIStoryboardSegue) { }' auf dem Zielansicht-Controller das Ziehen zum Beenden des Symbols –

+0

Können Sie das bitte auch versuchen? Wenn es funktioniert, wäre es besser, das als Antwort zu schreiben. –

+0

Mein schlechtes, ich dachte du machst das schon. Sie müssen die Abwicklung immer in der Ziel-VC deklarieren, nicht in der aktuellen VC, um zum Beenden mit der Strg-Taste zu ziehen. Aber für mich musste ich meinen Navigationscontroller untergliedern, um IB ziehen zu können. Und deklariere es im Ziel-VC und im benutzerdefinierten NavVc. –

9

Ich möchte eine detaillierte Antwort geben:

eine Abwickelstation segue ausführen zu können, gehen Sie auf die View-Controller, den Sie segue möchten, und fügen Sie die folgende Funktion; (Der Name kann natürlich ändern)

@IBAction func unwindToMainMenu(segue: UIStoryboardSegue) { 

} 

Sobald Sie diese Funktion hinzufügen, werden Sie in der Lage sein, diese Abroll-Funktion von jedem View-Controller auf dem Storyboard zu sehen. Klicken Sie einfach mit der rechten Maustaste auf das Exit-Symbol oben auf jedem View-Controller. exit icon right click

Wenn Sie mit einer Schaltfläche die Abwicklung durchführen möchten, können Sie mit Strg + Ziehen von der Schaltfläche zum Beenden des Symbols und wählen Sie Ihre unwindSegue Funktion. Erledigt!

Unwind with Button

Wenn Sie programmatisch auszuführen entspannen, dann CNTRL + Ziehen aus dem Viewcontroller Symbol zum Ausgang Symbol und wählen Sie die Abroll-Funktion.

enter image description here

Danach öffnen Sie die Kontur Dokument und klicken Sie auf den Abwickler segue.

enter image description here

Zum Attribute Inspector innerhalb Dienstprogramme und eine Kennung zu Ihrem Abroller segue geben.

enter image description here

Schließlich rufen Sie die performSegueWithIdentifier Funktion wie folgt aus;

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

Hoffe, dass hilft!

+0

Awesome :) Toller Job. – Mariam

1

Es funktioniert auf Xcode 6.2. Mein Fall ist ViewController A modal präsentiert B.Entspannen Sie Setup-Schritte unter:

  1. In A, schreiben Sie eine IBAction

    -(IBAction)unwindFromB:(UIStoryboardSegue *) unwindSegue 
    { 
        ViewControllerB *vc = [unwindSegue sourceViewController]; 
        // get whatever data you want to pass back from B 
    } 
    
  2. Im Storyboard, B und Rechtsklick auf den 'Exit' Button oben finden, dann ist die 'Präsentation Segue' Menü listet unwindFromB Sie haben gerade in A erstellt

  3. Klicken Sie auf das kleine ‚+‘ Zeichen auf der rechten Seite und den Link zurück zu B, wählen Sie ‚manuelle‘

  4. Vergessen Sie nicht, die Kennung des Abwicklungssegments festzulegen, wenn Sie sie programmgesteuert aufrufen müssen.

0

Ich fand, dass ich nicht vom UITableViewCell zum Exit Objekt auf dem View-Controller auf dem Storyboard ziehen könnte.

Lösung war zuerst fügen Sie eine entsprechende IBAction in Code. Sobald eine IBAction existiert, wird das Ziehziel aufleuchten.

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

}