【发布时间】:2019-04-23 03:01:59
【问题描述】:
我在访问和使用变量 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??
}
我要做的就是在另一个单独的函数中使用弹出框中的值。如果我不能返回它,我将如何将该值传递到其他地方?我在这里筛选了答案,看到有人问了类似的问题,但我看到的第一个答案是使用委托,但没有进一步的解释。我不想显示该值或立即使用它,我只想将它用于另一个计算,当用户单击其他按钮时将显示该计算。
如果这没有意义,我很抱歉,因为我很难解释这个问题,因此一次性帐户,虽然我觉得有一些很简单的东西我错过了。
感谢我能得到的所有反馈!
【问题讨论】:
-
如果您在编辑问题时着眼于标点符号、大写字母和缺少的单词等简单内容,这将很有帮助。如果您让问题易于阅读和理解,人们就更有可能努力回答问题。
-
This question 说明了你想要做什么。在同一主题上还有很多其他人。 Here’s another.
-
您可以在委托方法中调用您的
separate函数,或者将value分配给一个内部变量,然后您可以在类中的任何位置使用它。 -
如果我从委托调用另一个函数,我必须将值传递给它,然后如果我想再次使用该结果,我可以让该函数返回,对吗?似乎要走更长的路,虽然我没想到,所以谢谢。