当我切换视图时,音乐会继续播放背景,这对我的应用程序来说很好。但是当用户回到初始视图时,音乐再次从原始视图开始,因此用户听到音乐加倍。我已经有一些代码来检查声音是否已经播放但它不起作用。 :(
有什么想法吗?
if (audioPlayer.playing == 0 ) {
NSURL *url = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/CheeZeeLab.mp3", [[NSBundle mainBundle] resourcePath]]];
NSError *error;
audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error];
audioPlayer.numberOfLoops = 0;
audioPlayer.volume = 1;
[audioPlayer prepareToPlay];
[audioPlayer stop];
if (audioPlayer == nil)
NSLog(@"werkt niet");
else
[audioPlayer play]; }
else{
}
答案 0 :(得分:0)
我打赌你的问题在于如何转换回初始视图。
如果你正在推动(或从孩子那里做一个segue回到父...即循环segue),你就是在创建父视图控制器的新实例。
创建一个新实例会启动播放该声音的音频播放器的新版本。
您需要正确弹出视图才能返回上一个视图控制器。
答案 1 :(得分:0)
取决于您如何设置AVAudioPlayer,使用手动setter和getter,具有属性或甚至在构造函数中。你遇到了一些问题。
初始化ViewController时,您正在分配一个AVAudioPlayer,如果它继续播放,则它不会被解除分配,并且仍然保留。并且在每个属性的保留计数为0之前,不会释放ViewController。
回到主视图后,再次尝试设置相同的ViewController,我的猜测是你没有尝试将同一个实例推送到堆栈。而是制作一个新实例并将其推入堆栈?这也是一个AVAudioPlayer。
这是一种猜测,因为无法看到整个代码。但如果是这种情况,我认为你可以把事情做好一些。确保ViewController正确解除分配并释放所有属性,然后再将新实例推送到堆栈。