在 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)
我该怎么做才能使这项工作正常进行?
它确实有效。您可以更改pressed
中a
的值。我在您的 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 开始(因为 a
是 0
开始的)。这证明你的代码可以改变a
.
我想创建一个函数,当按下按钮时,变量的内容会发生变化。该函数确实被调用,但我无法在其中使用任何外部变量。
这是我遇到问题的代码:
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)
我该怎么做才能使这项工作正常进行?
它确实有效。您可以更改pressed
中a
的值。我在您的 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 开始(因为 a
是 0
开始的)。这证明你的代码可以改变a
.