Как перезагрузить AVAudioPlayer?


#1

Пытаюсь по нажатию на кнопку останавливать плеер, менять проигрываемую композицию и снова запускать его с этой самой новой композицией. Но при нажатии плеер продолжает проигрывать старую композицию. В чем причина? Спасибо

var soundsPlayer = try? AVAudioPlayer(contentsOf: URL(fileURLWithPath: Bundle.main.path(forResource: sounds, ofType: "mp3")!)) // плеер воспроизводящий ресурсы sounds
var sounds = "Ocean"

@objc func soundTapped(_ sender: UIButton){
    if sounds == "Ocean" {
        soundsPlayer?.stop() // останавливаем мелодию "Ocean"
        sounds = "Forest" // присваиваем новое значение для sounds
        nameSoundLabel.text = sounds
        soundsPlayer?.play() // запускаем новую мелодию "Forest" 
    } else if soundsOfNaturePlayNow == "Forest" {
        soundsPlayer?.stop() // останавливаем мелодию "Forest"
        sounds = "Ocean" // присваиваем новое значение для sounds
        nameSoundLabel.text = sounds
        soundsPlayer?.play() // запускаем новую мелодию "Ocean" 
    }

}


#2

А где передача самой песни?


#3

добавил комменты в код


#4

Это так не работает )))
Вы меняете просто значение переменной.
А нужно менять саму песню в плеере.

AVAudioPlayer принимает в качестве объекта AVPlayerItem. Нужно работать с ним для смены песни. Песня меняется через player.replaceCurrenItem(AVPlayerItem)
Советую почитать про это.


#5

Спасибо большое, теперь буду знать )))