我无法访问和使用从弹出窗口获得的变量value
第一次在这里问一个问题,这是编程的新手,所以请保持谦虚。我的程序有一个弹出窗口,显示一个供用户选择的日期,然后将该日期传递回主视图控制器。我对此方面进行了测试,以确保通过使用回调和委托使程序在标签中显示日期(我对这两种方法都进行了测试)来确保将数据显示回vc,并且它工作正常,但是我想要做的就是使用从弹出窗口中获取的值,将其放入变量中,并将其用于其他函数中的进一步计算。
我尝试进行更改,协议功能的返回值从最初的(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??
}
我要做的就是在另一个单独的函数中使用弹出窗口中的I值。如果无法返回该值,我该如何将其传递给其他地方?我在这里筛选了答案,看到有人问类似的问题,但是我看到的第一个答案是使用委托,但没有进一步的解释。我不想立即显示或使用该值,我只想将其用于其他计算,该计算将在用户单击其他按钮时显示。
很抱歉,如果这没有任何意义,因为我很难解释这个问题,因此,我提出了一个一次性的帐户,尽管我觉得有些事情太简单了,以至于我不见了。
我很高兴能收到所有反馈!
答案 0 :(得分:1)
除非我想念的东西似乎占您90%的距离。您已经popupValueSelected
获得了价值。如果将值存储在类级别变量中,则可以在以后使用它。如果我不太了解您的问题,请告诉我。