在 class 函数中使用变量的问题(Swift 游乐场)

Issue with using variables inside a class function (Swift Playgrounds)

我想创建一个函数,当按下按钮时,变量的内容会发生变化。该函数确实被调用,但我无法在其中使用任何外部变量。

这是我遇到问题的代码:

class Responder: NSObject {
    func pressed(sender: UIButton) {
        // Can't change the value of "a" here
    }
}

var a: Int = 0

let responder = Responder()
let bt = UIButton(frame: CGRect(x: 0.0, y: 0.0, width: 200.0, height: 200.0))
bt.addTarget(responder, action: #selector(Responder.pressed), for: .touchUpInside)

我该怎么做才能使这项工作正常进行?

确实有效。您可以更改presseda的值。我在您的 pressed 方法中添加了代码,如下所示:

import UIKit
import PlaygroundSupport

class Responder: NSObject {
    func pressed(sender: UIButton) {
        a = a+1
        print(a)
    }
}
var a: Int = 0

let responder = Responder()
let bt = UIButton(frame: CGRect(x: 0.0, y: 0.0, width: 200.0, height: 200.0))
bt.addTarget(responder, action: #selector(Responder.pressed), for: .touchUpInside)
PlaygroundPage.current.liveView = bt

按钮出现,每次我点击它,都会打印出一个更大的数字,从 1 开始(因为 a0 开始的)。这证明你的代码可以改变a.