如何将变量传递给嵌入在导航控制器中的 ViewController?

How to pass variable to a ViewController that is embedded in a Navigation Controller?

我想将数据从 ViewController1 传递到 ViewController2ViewController2 嵌入在 Navigation Controller 中(因为我有一个对应于 3 个子视图控制器的分段控件)。我的 segue 是直接从 ViewController1Navigation Controller.

我在 ViewController1 中尝试了以下方法:

ViewController2().testID = "test value"

ViewController2 中有以下内容:

var testID = ""

然而 testID 当我 运行 print(testID)ViewController2.

时不更新

将数据从 ViewController1 传递到 ViewController2 的建议是什么?非常感谢任何 help/advice!

您可以通过覆盖 ViewController 1.11 中的 prepare(for segue:) 函数来传递值=]

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

    // Get the new view controller using segue.destination 
    guard let destination = segue.destination as? UINavigationController else {
        return
    }

    guard let finalDestination = destination.viewControllers.first as? ViewController2 else {
        return
    }

    finalDestination.testID = "Test Value"
}

NSUserDefaults 将始终有效。