首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >didSet不更新NSImage

didSet不更新NSImage
EN

Stack Overflow用户
提问于 2020-10-14 12:43:38
回答 2查看 88关注 0票数 0

我正试图通过我的故事板中的一个按钮来更新NSButton(图像)的图像。不过,NSButton图像并没有改变。

在这里,我的ViewController IBAction代码:

代码语言:javascript
复制
    @IBAction func ButtonState(_ sender: NSSwitch) {
    let stateOfButton = sender.state
    if (stateOfButton.rawValue == 1){
        testButton.isEnabled = true

    
    }
    else{
        testButton.isEnabled = false

    }
}

这里有一个来自我的NSButton类的代码片段,修改如下:

代码语言:javascript
复制
override var isEnabled: Bool{
    didSet{
        if(self.isEnabled){
            self.image = NSImage(named: "TestEnabled")
            print("TestEnable")
        }
        else{
            self.image = NSImage(named: "TestDisabled")
            self.state = NSControl.StateValue(rawValue: 0)
            print("NoEnable")
        }
        
    }

打印语句是在切换开关时执行的,但是图像没有变化。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-11-02 23:16:39

请再次检查两个命名的图像是否都存在。下面是您的代码的修饰版本,它的工作原理与预期一样:

代码语言:javascript
复制
class ViewController: NSViewController {
    @IBOutlet weak var button: MyButton!
    
    @IBAction func switchClicked(_ sender: NSSwitch) {
        button.isEnabled = sender.state == .on
    }
}

class MyButton: NSButton {
    override var isEnabled: Bool {
        didSet {
            image = isEnabled
                ? NSImage(named: NSImage.statusAvailableName)
                : NSImage(named: NSImage.statusUnavailableName)
        }
    }
}

票数 0
EN

Stack Overflow用户

发布于 2020-10-14 12:52:17

对于在按钮中设置图像,您应该使用

代码语言:javascript
复制
yourButton.setImage(image, forState: .Normal)
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64353530

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档