我正在尝试使用swift中的变量切换直接整数,但由于某种原因我收到此错误并且我不知道。 最终目标是让我的currentValue(第76行)替换第41行的100 - 任何人都可以让我知道如何在没有错误的情况下完成此操作吗?新的快速和困难时期(在Objective-c中的背景,想象一下这个简单的东西不会阻止我在我的轨道上!)
这里有完整的.swift文件:http://pastebin.com/K6UHkNEv
编辑:
// these values change the number of squares
let _gameView = CGOLView(gridWidth:100, gridHeight:100)
@IBOutlet weak var tileSizeSlider: UISlider!
@IBAction func sliderValueChanged(sender: UISlider) {
var currentValue = Int(sender.value)
print("\(currentValue)")
}
应该如下:
// these values change the number of squares
let _gameView = CGOLView(gridWidth:currentValue, gridHeight:currentValue)
@IBOutlet weak var tileSizeSlider: UISlider!
@IBAction func sliderValueChanged(sender: UISlider) {
var currentValue = Int(sender.value)
print("\(currentValue)")
}
而是我收到此错误:
使用未解析的标识符'currentValue'
如果我尝试创建自定义int并输入它们:
var gridWidthValue = 50
var gridHeightValue = 50
像这样:
let _gameView = CGOLView(gridWidth:gridWidthValue, gridHeight:gridHeightValue)
我明白了:
'ViewController.Type'没有名为'gridHeightValue'的成员
任何帮助都将不胜感激 - 感谢stackoverflow社区!
大卫。
答案 0 :(得分:0)
您的问题是您无法访问变量currentValue,因为它位于函数内部。你必须在函数之外声明该值才能在函数之外使用它。
答案 1 :(得分:0)
currentValue是sliderValueChanged的局部变量。
相反,你应该在init中实例化_gameView。但请注意,您仍然无法使用currentValue。
如果这是一种类型的东西,你可以随时使_gameView成为可选项,然后在调整滑块时创建它。这无疑是有点笨拙的。
我不熟悉康威的生命游戏,但看看代码,似乎CGOLView的init根据网格宽度和高度做了一些调整。我提到这个的原因是你总是可以改变视图的帧大小,但是,你还需要为tileViews做一些其他的修改以使它看起来正常。
至于为什么gridWidthValue / gridHeightValue不起作用。这些是在实例中定义的属性。因此,您需要像self.gridWithValue那样做一些引用它。但是,在定义属性(例如
)时,您无法做到这一点let _gameView = CGOLView(gridWidth:gridWidthValue, gridHeight:gridHeightValue)
这也是为什么在init中实例化_gameView的原因。