当我回到原来的VC时,音乐在歌曲上播放

时间:2017-10-31 08:06:29

标签: ios avaudioplayer xcode9 swift4 audio-player

我正在为我的应用使用xcode 9和swift 4。在我的应用程序中,我在viewDidLoad中播放音乐。当我退出视图控制器以转到另一个视图时,它继续播放它应该的样子。然而,当我回到那个视图控制器时,歌曲又开始播放了。这首歌与首次加载的歌曲重叠。你们对如何阻止这种情况有任何想法吗?

do
{
    let audioPath = Bundle.main.path(forResource: "APP4", ofType: "mp3")
    try player = AVAudioPlayer(contentsOf: NSURL(fileURLWithPath: audioPath!) as URL)
}
catch
{
    //catch error
}

let session = AVAudioSession.sharedInstance()

do
{
    try session.setCategory(AVAudioSessionCategoryPlayback)
}
catch
{
}

player.numberOfLoops = -1
player.play()

1 个答案:

答案 0 :(得分:0)

它再次开始播放,因为再次调用viewDidLoad,要求它再次播放。最简单的解决方法是保留一个静态bool变量,以便在已经进行此调用时跟踪。

static var isMusicPlaying: Bool = false

viewDidLoad中,您可以将代码放在调用播放的代码之前。

guard !isMusicPlaying else {
   return
}
isMusicPlaying = true