我正在使用AVAudioPlayer,在我的 viewdidload 方法中,最初运行良好,但是当我再次进入相同的视图控制器时,歌曲开始与初始歌曲混合。
所以我想知道这首歌是在后台运行的吗?
这是我的功能,我正在调用此函数进入视图加载
func prepareAudio()
{
if audioPlayer.playing
{
audioPlayer.stop()
}
do
{
audioPlayer=try AVAudioPlayer(contentsOfURL: NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("Kids", ofType: ".mp3")!), fileTypeHint: AVFileTypeMPEGLayer3)
audioPlayer.delegate=self;
self.audioPlayer.play()
}
catch
{
print(error)
}
}
帮我找到解决方案..
第二次尝试
第3次尝试
第四次尝试
答案 0 :(得分:1)
if let audioPlayer = audioPlayer where audioPlayer.playing {
audioPlayer.stop()
}
// create your audio player and set the delegate etc.
但是我鼓励你,如果audioPlayer不是nil,你不应该总是再次启动audioPlayer。
if let audioPlayer = audioPlayer {
if audioPlayer.playing {
audioPlayer.stop()
}
} else {
// setup the audioPlayer and set the delegate
}
audioPlayer?.play()
答案 1 :(得分:0)
您必须检查变量是否仍然有效(if not nil
)
试试这个
if ((!audioPlayer) && (audioPlayer.playing == YES))
{
audioPlayer.stop()
}