我知道这是基本的东西,但我似乎无法得到这个。我有一个函数,它接受日期选择器值,将其转换为字符串,将其分配给变量,然后更新标签文本。
我希望能够在函数外部访问该变量,以便我可以在prepareForSegue中使用它。到目前为止,我已经尝试创建一个全局变量并在调用函数时更新它,但似乎没有用,我尝试在函数中返回值,但我必须做错了,因为它没有&#39工作要么。
功能:
func datePickerChanged(datePicker:UIDatePicker) {
var dateFormatter = NSDateFormatter()
dateFormatter.dateStyle = NSDateFormatterStyle.FullStyle
dateFormatter.timeStyle = NSDateFormatterStyle.ShortStyle
var strDate = dateFormatter.stringFromDate(datePicker.date)
dateTimeLabel.text = strDate
}
我想让strDate
退出该功能。非常感谢任何帮助!
答案 0 :(得分:2)
您可以通过不同的方式执行此操作。您可以在方法上使用inout参数以允许方法更新参数,如下所示:
var aString = ""
func doStuffWithA(inout theString: String) {
theString = "Groovy"
}
doStuffWithA(&aString) // changes aString to "Groovy"
或者您可以在方法之外声明属性:
class SomeClass {
var someString: String = ""
func doStuff() {
self.someString = "Groovy"
}
}
如果您只想要一个segue,可以在performSegueWithIdentifier上传递对象,如下所示:
func doStuff() {
var aString = "Groovy"
performSegueWithIdentifier("someSegue", sender: aString)
}
// Then here you can use it and assign it as a property on the next view controller
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "someSegue" {
guard let aString = sender as? String else {
return
}
let nextVC = segue.destinationViewController as! SomeVC
nextVC.someProperty = aString
}
}
答案 1 :(得分:0)
如果您希望通过课程可以访问它,那么就可以执行此操作
class xyz {
var startDate:String?
func datePickerChanged(datePicker:UIDatePicker) {
var dateFormatter = NSDateFormatter()
dateFormatter.dateStyle = NSDateFormatterStyle.FullStyle
dateFormatter.timeStyle = NSDateFormatterStyle.ShortStyle
self.startDate = dateFormatter.stringFromDate(datePicker.date)
dateTimeLabel.text = self.startDate
}
}