2016-11-01 4 views
0

Also entwickle ich eine App und lerne gleichzeitig schnell. Ich habe herausgefunden, wie man Daten von secondViewController an den firstViewController sendet. Im Wesentlichen habe ich den "done" -Button mit dem firstViewController verknüpft. Wenn ich "Done" drücke, öffnet sich ein neues Fenster des ersten viewControllers und die Daten, die ich übergeben habe.Swift: Daten an einen vorherigenViewController übergeben, ohne den viewController in einem neuen Fenster zu öffnen

Ich bin jedoch auf der Suche nach einer Möglichkeit, den FirstViewController zu aktualisieren, ohne ein anderes Fenster mit einem anderen Segment geöffnet zu haben.

Der beste Weg, dies zu erklären, ist, dass mein FirstViewController eine "Hinzufügen" -Schaltfläche hat, die secondViewController öffnet. Dieser ViewController hat zwei Textfelder, du schreibst Sachen hinein (ich möchte, dass Zeug in diesen beiden Textboxen auf dem ersten ViewController erscheint) & dann, wenn du done drückst, wird der secondViewController beendet und du bist wieder auf dem erstenViewController.

Dies ist der Code, den ich verwende: (im secondViewController)

override func prepare(for segue: NSStoryboardSegue, sender: Any?) { 
var destinationviewcontroller : ViewController = segue.destinationController as! ViewController 
    destinationviewcontroller.LabelText = weblinklabel.stringValue 
    } 

Offensichtlich labeltext ist ein Label in dem firstviewcontroller, das zeigt, was in diesen Textfeldern in dem secondViewController geschrieben.

Das Problem ist, wenn ich Storyboard verwenden und einfach von "Fertig" -Taste auf den FirstViewController ziehen, öffnet es den FirstViewController in einem neuen Fenster mit den neuen Daten/aktualisiert labeltext. Ich möchte, dass der secondViewController gerade beendet wird, wenn ich "Fertig" drücke und das aktualisierte Etikett auf dem erstenViewController erscheint, ohne dass es im neuen Fenster geöffnet wird.

Es ist ein bisschen schwierig zu erklären, also wenn Sie mehr Details zur Klärung benötigen, werde ich mehr als glücklich sein, es zu geben!

Vielen Dank im Voraus!

+1

Klingt wie Sie [entspannen Segues] verwenden sollten (http://stackoverflow.com/questions/12561735/what-are-unwind-segues-for-and -how-do-you-use-them # 12843906) – PeejWeej

Antwort

0

Ja, Sie sollten verwenden abwickeln Segues as stated here.

Fügen Sie zunächst eine leere IBAction Methode, um Ihre firstViewController (beachten Sie auch direkt schreiben sollte):

@IBAction func unwindToFirstViewController (sender: UIStoryboardSegue) { 
} 

Einmal geschrieben, jetzt in Ihrem Storyboard können Sie Ihre Done Taste zum Exit Artikel Control+drag in Ihrem secondViewController, wie folgt aus:

enter image description here

Es sollte Ihre neue IBAction Methode pop dass w ill den Abwickler Griff, jetzt nur noch sie implementieren:

@IBAction func unwindToFirstViewController (sender: UIStoryboardSegue) { 
    if let sourceViewController = sender.source as? SecondViewController { 
     // update whatever values you want 
     // to update in firstViewController from secondViewController 
    } 
} 
+0

Ich habe das 'Exit'-Element im Storyboard nicht, weil ich denke, dass ich eine Kakao-Anwendung mache und keine iOS-Anwendung. Die Unwindsegue-Methode, die Sie erwähnen, denke ich ist für iOS-Apps. –

Verwandte Themen