2017-04-13 3 views
0

entlassen Ich habe mehrere View-Controller in meiner App. Ich frage mich, gibt es einen Weg, von der dritten Sicht nach Hause zu gehen, aber dennoch die dritte Sichtweise zu verwerfen? Vorzugsweise ohne Navigationscontroller. Aber sag mir bitte, ob ich eins brauche. Danke für die Hilfe.zu Hause aus einer anderen Ansicht Controller Swift 3

+0

Warum Sie wollen keine Navigation-Controller verwenden. es ist eine saubere Art und Weise ist das gewünschte Verhalten zu erreichen. auch die Frage ist sehr schwer, Ihnen zu antworten, weil don‘ –

+0

Verwenden Sie eine Abwickelstrecke – rMickeyD

Antwort

0

Sie müssen Ihre benutzerdefinierte Segue implementieren und sie dann auf Ihre Segu zwischen den beiden Ansichten anwenden.

Hier ist ein Beispiel (aktuelle Ansicht wird vorherige ersetzen):

class ReplaceSegue: UIStoryboardSegue { 
    override func perform() { 
     let sourceController: UIViewController = self.sourceViewController 
     let destinationController: UIViewController = self.destinationViewController 
     let navigationController = sourceController.navigationController! 
     let controllerStack = NSMutableArray(array: navigationController.viewControllers) 

     controllerStack.replaceObjectAtIndex(controllerStack.indexOfObject(sourceController), withObject:destinationController) 

     navigationController.setViewControllers(controllerStack as NSArray as! [UIViewController], animated: true) 
    } 
} 
0

Ja, das ist möglich. Probieren Sie die folgenden Funktionen in Ihrem Code aus. In Ihrem Haus-View-Controller, Eingang eine Art freundliche/Empfangs segue Funktion:

@IBAction func unwindToVC(segue: UIStoryboardSegue) { 
    if let sourceViewController = segue.source as?  *Name of third view controller* { 
     //in here you can now access any information you 
     //want to retrieve from the third view controller 
     } 
} 

//In your third viewController put the following: 
//make sure you assign cancelSegue to a button or whatever 

func cancelSegue() { 
    performSegue(withIdentifier: "segueToMain", sender: self) 
} 

Dann im Storyboard auf dem dritten View-Controller Sie sich auf der rechten ziehen aus dem gelben Kreis an der Spitze des View-Controllers klicken in das orange Quadrat "exit" und dann wird es eine Option namens unwindToVC und klicken Sie darauf. Stellen Sie sicher, dass es identifiziert ist (wie Sie in cancelSegue sehen können, hieß mein Name segueToMain als die Kennung.

Jetzt, wenn Sie in der dritten Ansicht Controller sind, sollten Sie in der Lage sein, die zugewiesene Schaltfläche zu drücken, und es wird den Übergang ausführen

das ist für mich gearbeitet, hoffe, es hilft

+0

Vielen Dank alle – c3pNoah

+0

Kein Problem, froh, dass es geholfen hat – PaulBart1

+0

Vielen Dank Paul Bartholomew es funktionierte – c3pNoah

Verwandte Themen