微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么我不能在单击按钮时更改图像?

如何解决为什么我不能在单击按钮时更改图像?

我正在尝试在单击按钮时更改图像我正在使用 didset 这样做,当变量更改时,即使变量更改,图像也无法正常工作,这是我的代码

变量也改变了:

var page:Int=1 {
        didSet {
            dispatchQueue.main.async { [self] in
          let newW = page == 1 ? 0.04*Double(Float(bounds.size.width)) : 0.12*Double(Float(bounds.size.width))
            let newX=CGFloat(Float(Int(Float(Double(bounds.size.width)*0.5-newW*0.5))))
          
            currOption = UIImageView(image:UIImage(named: options[page-1].imagePath))
            currOption.frame = CGRect(x: newX,y: CGFloat(Int(Float(bounds.size.height/22))),width: CGFloat(newW),height: CGFloat(globW))
            }
            print("2nd Triggered",currOption)
         
        }
    }

受影响的变量:

var currOption:UIImageView! = UIImageView(image:UIImage(named: "art.scnassets/A.png"))

其中资产字符串 i:

var options:[AButtons]=[
       AButtons(imagePath: "art.scnassets/A.png",name: "A"),AButtons(imagePath: "art.scnassets/B.png",name: "B"),AButtons(imagePath: "art.scnassets/C.png",name: "C"),AButtons(imagePath: "art.scnassets/D.png",name: "D"),AButtons(imagePath: "art.scnassets/E.png",name: "E"),]

触发页面变化的函数

 @objc func optionClicked(sender: UIButton){
        page = sender.tag + 1
        print("1st Trigger",page,sender.tag)
    }

所有选项对象都有一个标签 谢谢大家的时间

解决方法

在某些时候(尽管您没有在示例中显示它),currOption 被添加到视图层次结构中。通过替换变量的值(即 currOption = ...),虽然替换了存储在 currOption 中的内容,但并没有替换存储在视图层次结构本身中的内容。

尝试将您的 currOption = ... 行替换为:

currOption.image = UIImage(named: options[page-1].imagePath)

当然,这是假设其他一切正常。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。