尝试使用swift中的变量切换直接整数值

时间:2014-11-30 01:06:33

标签: objective-c swift swift-playground

我正在尝试使用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社区!

大卫。

2 个答案:

答案 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的原因。