Swift,如何在其他函数中使用VC传回的数据?

Swift, How to use data passed back from VC in other functions?

我在访问和使用从弹出窗口

获得的 value 变量时遇到问题

第一次在这里提问,对编程还很陌生,所以请多多包涵。我的程序有一个弹出窗口,为用户显示 select 的日期,然后将该日期传回主视图控制器。我测试了这方面,通过让程序使用回调和委托(我测试了两种方式)在标签中显示日期,确保数据被传回 vc,它工作正常,但我我试图做的是使用从弹出窗口中获取的值,将其放入变量中,并将其用于其他函数中的进一步计算。

我尝试更改协议函数的 return 值,从最初的 (value: String) -> () 更改为 (value: String) -> (String)

但后来意识到当我尝试从 viewDidLoad 函数访问该函数时我没有输入值 就像我在 viewDidLoad

里面做的一样
    date = popupValueSelected(value: ???) // throws an error because it doesn't know about the delegate

这是我的委托协议代码:

    protocol PopupDelegate {
        func popupValueSelected(value:String)
    }

这是我的主视图控制器中用于从弹出窗口获取数据的代码,一切正常

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
            let popup = segue.destination as! DatePopupViewController 
            popup.delegate = self
    }

    func popupValueSelected(value: String) {
            date = value // how to access this value from somewhere else??
}

我想要做的就是在另一个单独的函数中使用我从弹出窗口中获得的值。如果我不能 return ,我如何将这个值传递到其他地方?我在这里筛选了答案,看到有人问了类似的问题,但我看到的第一个答案是使用委托,但没有进一步的解释。我不想显示该值或立即使用它,我只想将它用于另一个计算,当用户单击其他按钮时将显示该值。

如果这没有意义,我很抱歉,因为我很难解释这个问题,因此是一次性帐户,尽管我觉得有些东西太简单了,我错过了。

感谢所有能得到的反馈!

除非我遗漏了什么,否则你似乎已经完成了 90%。您已经 popupValueSelected 获得了一个值。如果您将值存储到 class 级别变量,您可以稍后使用它。如果我没有完全理解您的问题,请告诉我。