我正在尝试使用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)
}
}
这不起作用。缺少什么吗?尝试了此处列出的几乎所有解决方案,但没有尝试。
答案 0 :(得分:3)
首先,将您的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
。