ios - 为什么 UIButton 需要点击两次来改变它的图像

标签 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模拟器的bug还是正常的?

最佳答案

您可能有一个与 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
}

然后当您点击按钮时图像将自动更新。如果您想在第一次点击后保留图像,您可以将其更改为 button.isSelected = true

关于ios - 为什么 UIButton 需要点击两次来改变它的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53352159/

相关文章:

ios - 在 iOS 9 仅快捷栏模式下,与键盘顶部对齐的 View 出现在错误的位置

macos - 一个窗口中的swift cocoa(OSX)IBAction无法在独立窗口NSView中调用函数

ios - 向方法添加@objc 标志时出现 Xcode 编译器错误

ios - 如何通过 UIButton 存储 Parse 数据

ios - 在 UI 上调用事件方法

iphone - 如何在自定义单元格中居中放置图像

ios - 启用 BitCode 错误 Xcode 7

ios - NSNumber存储 float 。请没有科学记数法吗?

ios - WKWebView.loading 返回无法识别的选择器

ios - 将自定义图像 UIButtons 添加到自定义 UIToolbar 无法正常工作