为什么UIButton需要两次单击才能更改其图像

时间:2018-11-17 14:29:30

标签: ios swift uibutton

我是使用Swift 4进行iOS应用开发的新手。我使用以下代码通过在iOS模拟器中运行button2来更改其图像:

 @IBAction func button2(_ sender: Any) {
     button2.setImage(UIImage(named: "wrong_answer"), for: .normal)
 }

但是,当我第一次单击button2而不改变其图像时,它会突出显示。然后,在第二次单击后,图像已在button2中更改。

我的问题是,为什么第一次单击后button2中的图像没有更改?

我如何做才能在第一次单击后而不是两次更改图像?这是Xcode的iOS模拟器中的错误还是正常的?

3 个答案:

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