按钮图像在单击时不会改变,直到我快速单击另一个按钮

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 的操作。

【讨论】:

我已经尝试更改按钮的状态,但输出仍然相同我还删除了以前的按钮并插入新按钮,但我仍然得到相同的输出

以上是关于按钮图像在单击时不会改变,直到我快速单击另一个按钮的主要内容,如果未能解决你的问题,请参考以下文章

按钮图像不会改变

Android:单击按钮时如何显示TextView?

单击另一个按钮 swift 2.2 更改声音按钮图像

淡入图像,直到单击另一个图像

单击按钮时将按钮的图像从图像更改为另一个时出错

在 Iphone 中选择按钮时更改按钮的图像