我有一个名为currentYear的变量,默认情况下设置为2000。 currentYear是我的字符串数组中的变量,因此字符串知道它是哪一年。这是一个没有类的文件。这些值可全局访问。
import UIKit
var currentYear = 2000
var array = [
"The year you pressed is \(currentYear)",
]
在ViewController中,我的按钮的标签等于它包含的年份:2013,2014,2015和2016.按下按钮后,它会转到另一个ViewController。
import UIKit
class ViewController: UIViewController {
@IBAction chooseYearBtnPressed(sender: AnyObject) {
currentYear = sender.tag
print(array)
performSegueWithIdentifier("CustomSegue", sender: nil)
}
}
在最近的xcode更新之前,这个工作得很好。无论何时按下按钮,加载的数组都具有与新值相同的currentYear。现在它没有。在为currentYear分配一个新值后,数组中的currentYear仍为2000。
我该如何解决这个问题呢,那么currentYear会根据我作为新值传递的内容而改变吗?
解决方案:
var array: [String] {
return ["The Year you pressed is \(currentYear)"]
}
答案 0 :(得分:1)
我看不出你的代码是如何做你想做的。首次创建视图控制器实例时,为array
赋值的代码会触发,而不是再次触发。 (我假设您对currentYear
和array
的定义在视图控制器中,因此它们是视图控制器的属性。)
如果您想在每次更改currentYear的值时更新array
,您应该向currentYear添加didSet函数。像这样:
import UIKit
var array: [String]
var currentYear
{
didSet
{
array =
[
"The year you pressed is \(currentYear)",
]
}
}
currentYear = 2000
答案 1 :(得分:1)
在为它分配标签值之前尝试清除当前变量和数组,becoz在我看来它覆盖了某处..我不确定但是只是试一试..: - )