ios - 访问超出 Swift 范围的变量

标签 ios swift function variables return

我知道这是基本的东西,但我似乎无法理解。我有一个获取日期选择器值的函数,将其转换为字符串,将其分配给变量,然后更新标签文本。

我希望能够在函数外部访问该变量,以便在 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/

相关文章:

ios - 如何显示多个具有相同纬度/经度的 MKPinAnnotation?

ios - 如何停止枚举 NSAttributedString 的属性?

ios - 按值删除对象的数组扩展

JavaScript:函数作为参数传递给 if block

c++ - 我应该避免在这里使用 goto 吗?如果是这样,怎么做?

ios - 将数据从第一个 VC 传递到第三个 (Swift)

iOS : How to activate image stabilization on an AVCaptureSession?

java - Spring Data JPA 调用 Oracle 函数

iphone - 如何处理核心数据保留周期

ios - 打开相同开头的不同链接