ios - AVAudioPlayer 正在播放加时 View 续。加载[ swift ]

标签 ios swift avaudioplayer

viewDidLoad 的 mainmenuviewcontroller 中,我告诉它播放背景歌曲。问题是,当用户转到另一个 View 然后返回主菜单时,它会再次开始播放歌曲,并且两个副本重叠。我尝试将其放入 viewDidLoad 但它不起作用

if themePlayer.playing == false {

themePlayer.prepareToPlay()

themePlayer.play()

}

它只是忽略 if 条件并继续播放。我怎样才能解决这个问题?

最佳答案

-viewDidLoad 仅在 View 首次加载时运行。由于当您离开 mainmenuviewcontroller 时,您的播放器仍在播放歌曲,这表明 View Controller 永远不会被释放。尝试将 if 条件放入 -viewDidAppear-viewWillAppear 方法中。

override func viewWillAppear(animated: Bool) {
    super.viewWillAppear(animated);

    if themePlayer == nil {
        // Either it's the first time this view is loaded, or themePlayer was deallocated
        let soundURL = NSBundle.mainBundle().URLForResource("pres song", withExtension: "mp3") 
        themePlayer = AVAudioPlayer(contentsOfURL: soundURL, error: nil) 
        themePlayer.numberOfLoops = -1 
        themePlayer.volume = 0.1
        themePlayer.prepareToPlay()
        themePlayer.play()
    }

    if themePlayer.playing == false {
            themePlayer.prepareToPlay()
            themePlayer.play()
        }
}

如果将来对是否正在调用某些内容有疑问,请使用 breakpoints并逐步执行代码。

关于ios - AVAudioPlayer 正在播放加时 View 续。加载[ swift ],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31413346/

相关文章:

ios - UITabBarItem 操作给出 NSException

swift - 我自己的自定义类中的扩展

ios - Swift:尝试将元组传递给回调函数时获取 "ambiguous expression"

ios - 播放简单的声音

ios - AVAudioPlayer 不播放 mp3?

ios - 播放 AVAudioPlayer 导致延迟

ios - viewDidLoad (AdMob) 上的 Swift 插页式广告

ios - Visual Studio Cordova iOS 构建服务器设置在为build设置远程代理时失败

ios - 关于 UIScrollView 作为启用 UIPanGesture 的 View 的 subview 的问题

Swift - Firebase 在 Firestore 中获取 Facebook 好友 UID