UIButton不在两个图像之间切换Swift 4.2

时间:2019-03-21 04:34:16

标签: ios swift uibutton

我想向我的应用添加声音。我添加了带有两个图像的UIButton,它们分别是soundON和soundOFF。 当我第一次在应用程序中调用声音设置时,它们在每个图像上都可以很好地切换。 但是,当我第二次返回声音设置时,当显示soundOn图像时,好像soundOff图像不会消失。 奇怪的是,代码是如此简短和简单。

func soundButton() {
    sounds = UIButton(frame : CGRect(x: 65, y: 70, width: 40, height:40))
    sounds.setImage(UIImage(named : "soundON"), for : .normal)
    sounds.setImage(UIImage(named : "soundOFF"), for : .selected)
    sounds.showsTouchWhenHighlighted = true
    sounds.addTarget(self, action: #selector(soundButtonTapped), for: .touchUpInside)
    self.soundView.addSubview(sounds)
}

@objc func soundButtonTapped(_ sender: Any) {
    sounds.isSelected.toggle()
    isSoundOn.toggle()
}

我添加了一个视频来显示该问题,因为这样可以节省大量打字操作。

http://www.reeflifeapps.com/soundError.mov

非常感谢您的帮助。

更新: 我在UIView上有一个按钮,该按钮在拼图启动时就隐藏了。当用户按下“声音设置”图标时,声音设置UIView被取消隐藏。我在此功能上具有按钮来取消隐藏声音设置。我将其移至viewDidLoad()并对其进行了修复。

1 个答案:

答案 0 :(得分:0)

我建议您定义一个布尔变量,以保留按钮的当前状态。然后,应根据变量的当前状态设置按钮的当前图像。

ecode   ename
E1  NIKHIL
E2  Nikhil.
E3  Nikhil??
E4  sunita..
E5  sunita..
E6  sunita
E8  HIREN
E9  HIREN..
E10 HIREN??

如果您仍想使用var isSoundOn = false @objc func soundButtonTapped(_ sender: Any) { isSoundOn.toggle() if isSoundOn { // your logic when sound on (set button selected image, action etc) } else { // logic when sound off (set button not selected image, action etc) } } 作为布尔变量,请soundButton.isSelectedsoundButton.setImage(yourImage, for: .selected)中的不同状态定义图像,并按如下方式定义它们:

soundButton.setImage(yourImage, for: .normal)

可以使用以上两种方法之一。

更新:

如劳埃德·凯伊泽(Lloyd Kaijzer)所述,soundButton.setImage(soundButton.isSelected ? soundOnImage : soundOffImage, for: .normal) 更新为isSoundOn = !isSoundOn