@IBAction Build Error - 无法执行代码来重置Int值

时间:2017-06-22 05:57:39

标签: xcode swift3 uialertaction

我试图让用户重置他/她的游戏分数(最初为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)
}

1 个答案:

答案 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)