按钮图像在单击时不会改变,直到我快速单击另一个按钮
Posted
技术标签:
【中文标题】按钮图像在单击时不会改变,直到我快速单击另一个按钮【英文标题】:Button image not changing on clicking until i click on another button in swift 【发布时间】:2018-02-05 19:55:55 【问题描述】:我正在尝试制作一个弹出窗口,要求用户对项目进行评分。 但是当我点击其中一个按钮时,图像不会改变,直到我按下另一个按钮。
let selectedStar = UIImage(named:"004-star-selected.png")
let star = UIImage(named: "001-star.png")
@IBAction func rating(_ sender: UIButton)
DispatchQueue.main.async
let tag = sender.tag
for i in 10...14
let view = self.view.viewWithTag(i) as! UIButton
if i <= tag
view.setImage(self.selectedStar, for: UIControlState.normal)
else
view.setImage(self.star, for: .normal)
【问题讨论】:
DispatchQueue.main.async
的使用在这里毫无意义。
谢谢,但还是不行
有可能按钮的UIControlState
不是.normal
,直到按下不同的按钮,它可能处于.highlighted
或.selected
状态。尝试在您的 view.state
上打印语句以查看发生了什么。您是否使用 TouchUpInside
作为情节提要中的 IBAction
设置?您可能会在单击不同按钮后看到它,因为在“选择”不同按钮后它会返回到.normal
。您仅为 .normal 控制状态设置图像。
【参考方案1】:
你是如何在 xib 文件中设置标签的?确保每个按钮都有 10...14 的标签。如果你在xib中复制一个按钮并粘贴它,它将保留旧标签。
您可以为.normal
和.selected
状态分配单独的图像并更新isSelected
值。您可以在 xib
文件本身中执行此操作,在 IBAction 中您可以执行类似 button.isSelected = true
的操作。
【讨论】:
我已经尝试更改按钮的状态,但输出仍然相同我还删除了以前的按钮并插入新按钮,但我仍然得到相同的输出以上是关于按钮图像在单击时不会改变,直到我快速单击另一个按钮的主要内容,如果未能解决你的问题,请参考以下文章