我正在尝试使用UIButton作为开关。轻按按钮时,按钮图像应更改为(atcs.png),状态应为(.selected)。
再次轻按图像时,按钮图像应再次变为(actns.png),状态应为(.normal)。

以下是我当前代码的示例:

@IBOutlet weak var atcBtn: UIButton!

@IBAction func atcTapped(_ sender: UIButton) {
    if atcBtn.isSelected {
        atcBtn.setImage(UIImage(named: "atcs.png"), for:.selected)
    } else {
        atcBtn.setImage(UIImage(named: "atcns.png"), for:.normal)
    }
}

这不起作用。缺少什么吗?尝试了这里列出的几乎所有解决方案,但没有任何解决方法。

最佳答案

首先,将setImage代码移动到viewDidLoad。没有理由重复设置这些图像:

atcBtn.setImage(UIImage(named: "atcs.png"), for:.selected)
atcBtn.setImage(UIImage(named: "atcns.png"), for:.normal)

接下来,在点击按钮时切换isSelected属性:
@IBAction func atcTapped(_ sender: UIButton) {
    sender.isSelected = !sender.isSelected
}

还要注意-使用sender而不是对atcBtn进行硬编码。

关于ios - 使用UIButton作为开关,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52141691/

10-08 23:30