2016-05-02 14 views
0

Ich habe diese Situation:entlassen zwei Controller Swift

ich einen ersten View-Controller haben, wenn tippen auf die Schaltfläche in es ich modal eine andere Ansicht-Controller öffnen, in diesem View-Controller, wenn ich eine andere Taste tippen öffne ich in Modal View einen anderen View-Controller und in ihm gibt es eine Schaltfläche und wenn ich darauf tippen, ich möchte zum ersten Blick Controller gehen, ohne es neu zu initialisieren. Wie mache ich das?

+0

Lassen Sie die zweite Ansicht Controller seinen Presenter entlassen. – Avi

+0

Sie können auch Abschlussblöcke verwenden. Wenn Sie einen View-Controller ablehnen, erhalten Sie einen Abschlussblock. –

Antwort

5

Dies ist die perfekte Situation für eine Abwickelstrecke.

in Ihrem ersten Viewcontroller Setzen Sie diese (die Sie zurückkehren wollen):

@IBAction func backFromVC3(_ segue: UIStoryboardSegue) { 
    print("We are back in VC1!") 
} 

Dann im Storyboard in Ihrem 3. Viewcontroller, Steuer -Ziehen von Ihrem Button der zum Ausgang Symbol oben auf dem viewController und wählen Sie backFromVC3 aus dem Pop-up.

Jetzt, wenn der Benutzer die Schaltfläche in VC3 drückt, werden sowohl VC3 als auch VC2 verworfen und Sie kehren zu VC1 zurück.


Wenn Sie keine Storyboards verwenden, können Sie die viewControllers mit Code löschen. Hier ist der Code für einen Handler der Schaltfläche zwei Ebenen von Viewcontroller zu entlassen:

func doDismiss(_ sender: UIButton) { 
    // Use presentingViewController twice to go back two levels and call 
    // dismissViewController to dismiss both viewControllers. 
    self.presentingViewController?.presentingViewController?.dismiss(animated: true, completion: nil) 
} 
+0

mein Problem ist, dass ich die Tasten durch den Code – gianni

+0

erstellen Sind Ihre ViewControllers im Storyboard, oder ist all Ihre Benutzeroberfläche mit Code gemacht? – vacawama

+0

Ich habe alle durch den Code – gianni

0

Dank alle für die Antwort und bearbeitet meine Frage :)

Ich fand 2 Zeilen Code behoben mein Problem:

let appDelegate = UIApplication.sharedApplication(). Delegate als! AppDelegate appDelegate.window! .rootViewController? .dismissViewControllerAnimated (true, Abschluss: nil).

Und das funktioniert gut.

Vielen Dank

Verwandte Themen