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

Swift 为什么我不能在单击按钮时更改图像?,swift,uiimageview,didset,Swift,Uiimageview,Didset,我正在尝试在按钮单击时更改图像我正在使用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(

我正在尝试在按钮单击时更改图像我正在使用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)
    }
所有选项对象都有一个标记 感谢大家抽出时间

在某个时候(尽管您在示例中没有显示),视图层次结构中添加了
currooption
。通过替换变量的值(即
currooption=…
),虽然替换了
currooption
中存储的值,但并不替换视图层次结构本身中存储的值

正在尝试将
currooption=…
行替换为:

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

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

非常感谢,它工作正常!伟大的当你知道我在等你时,你可以把答案标为正确