2017-06-08 20 views
0

私はちょうどこれをMacアプリケーションのために試してみるのに数日を費やしましたが、それをうまくやっていません。最初のViewControllerから2番目のViewControllerに移動して値を取得して最初に戻る

私は最初のViewControllerと2番目のViewControllerを持っています。たとえば、ViewControllerA(VC-A)とViewControllerB(VC-B)としましょう。 Main.storyboardでは、それらはsegueによって識別子 "PromptToUser"で接続されています。

VC-Bはボタンではなく、処理中の状態でトリガーされます。 VC-Aに

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


は、それはによってトリガされます。 VC-Aでは

、私がこれまでに以下を置く:VC-Bで

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

を、これまでのところ、私が持っている:

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

VC-Bにもボタンがあります上記変数のためにユーザーが入力した情報を収集して最初のビューに戻すためのトリガーとして作成したいものです。

私はこれに関する多くの似たようなトピックをstackoverflowで見つけました。しかし、私はUIを作ることができなかったので、それらのほとんどはiOS用ですが、マックアプリケーション用ではないようです...そして、彼らが言及した他のクラス(代理人)とプロトコルはSwift 3環境で認識されるようになりました。私はNSViewControllerとNSを持っています... UIではありません...

スウィフト3のMacアプリケーションでこれにアプローチするにはどうすればよいでしょうか?

答えて

0

VC-Aで静的変数を作成し、静的変数の値をVC-Bから更新することができます。 VC-B

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

でVC-

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

実施例

は、VC-BのSaveButtonアクションのコードを書き、あなたはVC-Aでの更新値を取得します。 あなたはVC-Bのいずれかの[保存]ボタンを使用していない場合は、VC-B素早く返信用

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

    } 
+0

感謝のviewWillDisappear方法でコードを書くことができます。私はちょうど述べたように静的変数をVC-Aで作成してみました:static var login = ""、static var password = "" VC-Bでは、以下を作成しました:IBAction func submit(_ sender:Any){VC-A.login = Login.stringValue、VC-A.password.stringvalue}、これらのNSTextFieldに入力したものは使用しません。それは常に空です。また、.textは認識されないので、.stringValueでこれを行う必要がありました。これは私が他の投稿を参照したときに問題となった部分と同じです。彼らはすべて。テキストを使用しますが、それはMacアプリケーションでは動作しません。 – WeeklyJump

関連する問題