我需要让我创建的这个按钮(一个蓝色按钮)改变我在代码中另一个代码块中创建和使用的变量(名为playerMark
)。
以下是引入和使用playerMark
的地方:
func setImgforCircle(spot:Int, player:Int) {
var playerMark = player == 1 ? "Red_x" : "Red_o"
plays[spot] = player
switch spot {
case 1:
circle1.image = UIImage(named: playerMark)
case 2:
circle2.image = UIImage(named: playerMark)
case 3:
circle3.image = UIImage(named: playerMark)
case 4:
circle4.image = UIImage(named: playerMark)
case 5:
circle5.image = UIImage(named: playerMark)
case 6:
circle6.image = UIImage(named: playerMark)
case 7:
circle7.image = UIImage(named: playerMark)
case 8:
circle8.image = UIImage(named: playerMark)
case 9:
circle9.image = UIImage(named: playerMark)
default:
circle2.image = UIImage(named: playerMark)
}
}
我有一个名为blueBtnClicked
的IBAction连接到我需要执行的蓝色按钮:
playerMark = player == 1 ? "Blue_x" : "Blue_o"
但是控制台没有“记住”变量(playerMark和播放器),我得到了错误,'使用未解析的标识符'。这是blueBtnClicked
块:
@IBAction func blueBtnClicked(sender: UIButton) {
gameboard.image = UIImage(named: "Blue_gb")
resultsView.image = UIImage(named: "Blue_results")
colorsView.image = UIImage(named: "Blue_Colors")
colorsBtn.setTitleColor(UIColor.lightTextColor(), forState: UIControlState.Normal)
resetBtn.setTitleColor(UIColor.lightTextColor(), forState: UIControlState.Normal)
}
点击某些按钮后,如何更改playerMark变量?因为我是Swift的新手,请详细解释所有答案。
答案 0 :(得分:1)
问题是您正在尝试访问不在范围内的变量。目前,playerMark变量的范围是setImgforCircle函数,这意味着只能在setImgforCircle中访问playerMark。
解决方案可以是将函数外部的playerMark变量定义为类变量,如下所示:
var playerMark: String?
问号使此变量成为可选项,因此您无需直接指定值(该值现在为零)
为playerMark分配一个值,你可以简单地说
playerMark = player == 1 ? "Red_x" : "Red_o"
您不需要使用var。
再次定义它现在,var可以在班级的任何地方使用。您可以使用playerMark!
来阅读它
那里的感叹号意味着“我知道这个价值可以是零,但无论如何都要给我价值”。
处理playerMark的nil值的安全方法是:
if playerMark {
//access playerMark!
} else {
// playerMark has no valid value, do something else
}
为了更好地了解swift,我建议在iBooks上免费阅读Apple的“The Swift Programming Language”