我试图让用户重置他/她的游戏分数(最初为let
的基本0
值,但我在最后一次addAction时仍然收到错误告诉我:
无法转换类型'() - >的值()'到期望参数类型'((UIAlertAction) - > Void)?'
请帮帮我!这是我提到的代码块:
@IBAction func resetScore() {
let alertController = UIAlertController(title: "Reset", message: "Are you sure you want to reset your game score? All progress will be lost.", preferredStyle: UIAlertControllerStyle.alert)
alertController.addAction(UIAlertAction(title: "Cancel", style: UIAlertActionStyle.default, handler: nil))
alertController.addAction(UIAlertAction(title: "Reset", style: UIAlertActionStyle.default, handler: {
func resetScore() {
let score = 0
scoreCounter.text = "Score: " + String(score)
}
}))
present(alertController, animated: true, completion: nil)
}
答案 0 :(得分:0)
这是因为闭包期待一个参数。你需要在最后写_ in
:
alertController.addAction(UIAlertAction(title: "Reset", style: UIAlertActionStyle.default, handler: { _ in
此外,如果您希望在按下按钮时调用resetScore
函数,则需要将代码更新为以下内容:
alertController.addAction(UIAlertAction(title: "Reset", style: UIAlertActionStyle.default, handler: { _ in
let score = 0
self.scoreCounter.text = "Score: " + String(score)
}))
此外,基于此核心,您将使用let scope
行声明一个新的局部变量,这意味着您不会重置任何内容。我猜你有一个名为scope
的实例变量,所以下面会这样做:
self.score = 0
self.scoreCounter.text = "Score: " + String(score)