从单个按钮停止 AVAudioplayer

Stop AVAudioplayer from single button

我试图在用户点击 "Done" 按钮时停止警报声。这是我现在使用的代码。当它提到使用相同的按钮时,我找不到任何解决方案。

@objc func runTimer() {

        if isTimerRunning {
            cafe.time -= 1

            if cafe.time <= 0 {
                timer.invalidate()
                let url = Bundle.main.url(forResource: "alarm_sound", withExtension: "mp3")
                alarmSound = try! AVAudioPlayer(contentsOf: url!)
                alarmSound.play()

                if alarmSound.isPlaying {
                    startButton.setTitle("Done", for: .normal)


                }
            }

@IBAction func startButtonPressed(_ sender: Any) {

        if !isTimerRunning {
            navigationItem.hidesBackButton = true
            isTimerRunning = true
            timer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(runTimer), userInfo: nil, repeats: true)
            print("time")
            startButton.setTitle("Stop Brewing", for: .normal)
        } else {
            navigationItem.hidesBackButton = false
            isTimerRunning = false
            resetTimer()
            startButton.setTitle("Start Brewing", for: .normal)
        }
        if startButton.currentTitle == "Done"{
          alarmSound.stop()
        }else{
          alarmSound.play()
        }

    }

提前致谢!

取一个变量来检查音频是否正在播放

var playing = false

设置 playing = true 当您更改按钮文本时(完成)

并在点击事件中应用以下代码

@IBAction func startButtonPressed(_ sender: Any) {

if playing == true {
   alarmSound.stop()
}else{

alarmSound.play()

 }
}