我知道这是基本的东西,但我似乎无法理解。我有一个获取日期选择器值的函数,将其转换为字符串,将其分配给变量,然后更新标签文本。
我希望能够在函数外部访问该变量,以便在 prepareForSegue 中使用它。到目前为止,我已经尝试创建一个全局变量并在调用函数时更新它,但这似乎没有用,我已经尝试在函数中返回值,但我一定是做错了,因为它也没有用.
函数:
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
。非常感谢任何帮助!
最佳答案
你可以用不同的方式做到这一点。你可以在方法上使用 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
}
}
关于ios - 访问超出 Swift 范围的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36927991/