如何从First ViewController转到Second ViewController,获取值并返回First

时间:2017-06-08 08:52:41

标签: macos swift3 segue nsviewcontroller

我花了几天的时间试图解决这个问题,但是没有成功。

我有第一个ViewController和第二个ViewController。让我们来说,ViewControllerA(VC-A)和ViewControllerB(VC-B)。在Main.storyboard中,它们通过segue与标识符" PromptToUser"连接。

VC-B不是由按钮触发,而是在此过程中有条件触发 它由以下内容触发:

performSegue(withIdentifier: "PromptToUser", sender: self)
VC-A中的

在VC-A中,到目前为止,我将以下内容:

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

在VC-B中,到目前为止,我有:

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

VC-B还有一个按钮,我想将其作为触发器来收集用户为上述变量输入的信息并将其发送回第一个视图。

我在stackoverflow中发现了很多类似的主题。但是,似乎大多数都是针对iOS的,但不适用于mac app,因为我无法创建UI ......以及他们提到的其他类(委托)和协议,以便在Swift 3环境中得到认可。我有NSViewController,NS ...不是UI ......

使用Swift 3为mac app解决这个问题的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

您可以在VC-A中创建一个静态变量,只需从VC-B更新静态变量的值。实施例

在VC-A

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

在VC-B中

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

在VC-B的SaveButton Action中编写代码,您将获得VC-A中的更新值。 如果您没有在VC-B中使用任何保存按钮,那么您可以在viewWillDisappear VC-B方法中编写代码

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

    }