我正在使用一个功能为我的游戏创建多个按钮。
func createButton() {
let button = UIButton()
button.setTitle("", for: .normal)
button.frame = CGRect(x:15, y: 50, width: 200, height:100)
button.backgroundColor = UIColor.red
self.view.addSubview(button)
button.addTarget(self, action: Selector(("buttonPressed:")), for:
.touchUpInside)
}
我在viewDidLoad函数中调用此函数一次以进行测试,但我不知道我应该在buttonPressed()函数中添加哪些代码来改变我的按钮的颜色?我试着做了
self.backgroundColor = UIColor.blue
但这不起作用。我也尝试使用UIButton和按钮而不是self,但这两者都不起作用。我该怎么办?
答案 0 :(得分:2)
您的代码不是Swift 4代码。以下是如何执行此操作:
按照您的方式创建按钮,但将Selector
更改为#selector
:
func createButton() {
let button = UIButton()
button.setTitle("", for: .normal)
button.frame = CGRect(x:15, y: 50, width: 200, height:100)
button.backgroundColor = UIColor.red
self.view.addSubview(button)
button.addTarget(self, action: #selector((buttonPressed)), for: .touchUpInside)
}
使用自动添加的sender
:
@objc func buttonPressed(sender: UIButton) {
sender.backgroundColor = UIColor.blue
}
另外我可以提供一些建议吗?
tag
属性(您甚至可以将其作为参数添加到createButton
)。通过这种方式,您可以知道点击了哪个按钮。答案 1 :(得分:0)
只需将按钮设为实例属性即可。
let changingButton = UIButton()
func createButton() {
changingButton.backgroundColor = UIColor.red
changingButton.addTarget(self, action: #selector(buttonPressed), for: .touchUpInside)
}
@objc func buttonPressed() {
changingButton.backgroundColor = UIColor.blue
}