我是使用Swift 4进行iOS应用开发的新手。我使用以下代码通过在iOS模拟器中运行button2
来更改其图像:
@IBAction func button2(_ sender: Any) {
button2.setImage(UIImage(named: "wrong_answer"), for: .normal)
}
但是,当我第一次单击button2
而不改变其图像时,它会突出显示。然后,在第二次单击后,图像已在button2
中更改。
我的问题是,为什么第一次单击后button2
中的图像没有更改?
我如何做才能在第一次单击后而不是两次更改图像?这是Xcode的iOS模拟器中的错误还是正常的?
答案 0 :(得分:1)
您可能有一个与368
状态相关的问题导致了此问题。
我不认为这是模拟器错误。
顺便说一句,您应该遵循的一个好习惯是将插座的名称命名为与UIButton
不同。假设:
@IBAction
尝试一下:
@IBAction func buttonTapped(_ sender: Any) {
button.setImage(UIImage(named: "image"), for: .normal)
}
然后,当您点击按钮时,图像将自动更新。如果要在第一次点击后保留图像,可以将其更改为override func viewDidLoad() {
super.viewDidLoad()
button.setImage(UIImage(named: "image"), for: .selected)
}
@IBAction func buttonTapped(_ sender: Any) {
button.isSelected = !button.isSelected
}
。
答案 1 :(得分:0)
重命名您的方法/操作,使其不同于按钮/属性。
因为知道它的类,所以将Any更改为UIButton。
@IBAction func buttonTapped(_ buttonTapped: UIButton) {
buttonTapped. button.isSelected = !button.isSelected
}
通过将视图控制器声明为UIButtonDelegate并将按钮的委托属性设置为self,确保您正在接收按钮回调。
答案 2 :(得分:0)
它是模拟器错误。它在真实设备上工作 @IBAction func button2(_发件人:UIButton){ button2.setImage(UIImage(name:“ wrong_answer”),for:.normal) }