2017-06-08 5 views
0

Ich habe gerade ein paar Tage damit verbracht, das herauszufinden, aber nicht erfolgreich.Wie kann ich vom ersten ViewController zum Second ViewController gehen, Werte abrufen und zurück zu First gehen

Ich habe den ersten ViewController und zweiten ViewController. Nehmen wir an, ViewControllerA (VC-A) und ViewControllerB (VC-B). In Main.storyboard sind sie mit dem Bezeichner "PromptToUser" verbunden.

VC-B wird nicht durch Knopf ausgelöst, sondern durch Bedingung während des Prozesses.

performSegue(withIdentifier: "PromptToUser", sender: self) 

in VC-A:
Es wird durch ausgelöst.

In VC-A, habe ich die bisher folgende:

override func prepare(for segue: NSStoryboardSegue, sender: Any?) { }

In VC-B, so weit, ich habe:

@IBOutlet weak var Login: NSTextField! 
@IBOutlet weak var Pass: NSSecureTextField! 

VC-B hat auch einen Knopf die ich als einen Auslöser machen möchte, um Informationen zu sammeln, die vom Benutzer für die oben genannten Variablen eingegeben wurden, und sie an die erste Ansicht zurückzusenden.

Ich fand viele ähnliche Themen in Stackoverflow. Es scheint jedoch, dass die meisten von ihnen für iOS sind, aber nicht für Mac-App, da ich nicht UI machen konnte ... und andere Klassen (Delegaten) und Protokolle, die sie für Swift 3-Umgebung erkannt haben. Ich habe NSViewController und NS ... nicht UI ...

Was wäre der beste Weg, dies für Mac App mit Swift 3 zu nähern?

Antwort

0

Sie können eine statische Variable in VC-A erstellen und nur den Wert der statischen Variablen von VC-B aktualisieren. Beispiel

In VC-A

static var login = "" 
static var password = "" 

In VC-B

VC-A.login = nameTextField.text 
VC-A.password = passTextField.text 

Schreiben Sie den Code in Savebutton Aktion von VC-B, und Sie werden den Aktualisierungswert in VC-A erhalten. Wenn Sie jede Schaltfläche Speichern in VC-B nicht verwenden, dann können Sie Code in viewWillDisappear Methode der VC-B

override func viewDidDisappear(_ animated: Bool) { 
      firstVC_A.login = nameTextField.text 
      firstVC_A.password = passTextField.text 

    } 
+0

Dank für die schnelle Antwort schreiben. Ich habe es gerade versucht, indem ich eine statische Variable in VC-A erstellt habe, wie du es erwähnt hast: static var login = "", static var password = "". In VC-B erstellt: IBAction func submit (_ sender: Beliebig) {VC-A.login = Login.stringValue, VC-A.password.stringvalue}, aber es nimmt nichts, was ich in dieses NSTextField eingegeben habe. Es ist immer leer. Außerdem wird .text nicht erkannt, also musste ich dies mit .stringValue machen. Dies ist auch der gleiche Teil, den ich hatte, als ich auf einen anderen Beitrag verwiesen habe. Sie alle benutzen .text, aber das funktioniert nicht für Mac-App, denke ich. – WeeklyJump

Verwandte Themen