Swift 单击时如何切换按钮图像?

Swift 单击时如何切换按钮图像?,swift,Swift,我想在单击时将播放按钮更改为暂停按钮。反之亦然 这是我的密码: var-toggleState=1 @IBAction func playPauseButton(sender: AnyObject) { var playBut = UIButton() if toggleState == 1 { player.play() toggleState = 2 } else { player.pause()

我想在单击时将播放按钮更改为暂停按钮。反之亦然

这是我的密码:

var-toggleState=1

@IBAction func playPauseButton(sender: AnyObject) {

      var playBut = UIButton()

    if toggleState == 1 {  

        player.play()

        toggleState = 2

    } else {

        player.pause()

        toggleState = 1 
    }

}
我尝试过(但没有成功)添加:


当我点击play时,我的应用程序崩溃了。谁能帮帮我吗?

你尝试的逻辑应该是有效的。唯一可疑的是强制转换,但Swift允许您通过声明确切类型的sender参数来消除它:

let imgPlay = UIImage(named:"play.png")
let imgPause = UIImage(named:"pause.png")

@IBAction func playPauseButton(playBtn: UIButton) {
    if toggleState == 1 {
        player.play()
        toggleState = 2
        playBtn.setImage(imgPlay,forState:UIControlState.Normal)
    } else {
        player.pause()
        toggleState = 1
        playBtn.setImage(imgPause,forState:UIControlState.Normal)
    }
}

我还将图像创建从处理程序中移出,以避免重复执行相同的任务。

它仍在崩溃。我在类AppDelegate上得到SIGABRT:UIResponder,UIApplicationLegate{@BenKelsey如果从两个分支删除
setImage
调用,它会停止崩溃吗?如果你是说在.setImage之后删除两行上的所有内容,那么是的,它会停止崩溃。@BenKelsey这很奇怪……你能设置一个断点,看看
imgPlay
imgPause
是否都是非零吗?很抱歉,我刚刚开始大约两周前我开始编程,但我还不知道如何使用断点。我只是在谷歌上搜索了一下,所以我知道断点的作用和设置方法,但我不知道如何使用断点检查非nils.If player.playing{…}
let imgPlay = UIImage(named:"play.png")
let imgPause = UIImage(named:"pause.png")

@IBAction func playPauseButton(playBtn: UIButton) {
    if toggleState == 1 {
        player.play()
        toggleState = 2
        playBtn.setImage(imgPlay,forState:UIControlState.Normal)
    } else {
        player.pause()
        toggleState = 1
        playBtn.setImage(imgPause,forState:UIControlState.Normal)
    }
}