【问题标题】:AVAudio Won't Stop after Presenting Modal View呈现模态视图后 AVAudio 不会停止
【发布时间】:2011-03-23 14:14:33
【问题描述】:

我有一个显示电影的应用程序。第一个屏幕显示呈现不同模式视图的按钮。在这些模态视图中是播放视频的按钮。

我希望主菜单播放音乐(很简单),但我希望它在第二个模式视图中持续存在,但在视频开始播放时停止。

按下电影按钮时,我尝试 [audioPlayer stop],但音乐仍在播放。

我尝试在 viewDidAppear 和 viewDidDisappear 中停止和播放音频。这使得音频在呈现第二个视图时重新启动,而不是在视频期间播放。

我希望这是有道理的,我真的只需要知道如何让音频一直播放(通过两个或三个模态视图),除了在电影播放期间。

这是我的vewDidAppear 方法:

-(void)viewDidAppear:(BOOL)animated {
   NSString *musicPath = [[NSBundle mainBundle] pathForResource: @"Intro Music" ofType:@"mp3"]; 
   if(musicPath) {
     NSURL *musicURL = [NSURL fileURLWithPath:musicPath];
     audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:musicURL error:nil];
     [musicURL release]; 
   }
   if(!audioPlayer.playing) {
     [audioPlayer play]
   }
}

【问题讨论】:

  • 欢迎来到 StackOverflow!请记住始终关注您的问题并选择正确的答案。
  • 你能发布一些代码吗?我认为您可能在哪里告诉音频播放器停止?它是在创建它的同一个类中吗?
  • 我也可以看看你的头文件吗?

标签: iphone audio avaudioplayer viewdidappear modal-view


【解决方案1】:

您的模态视图控制器正在尝试停止其中不存在的audioPlayermainMenueViewControlleraudioPlayer,所以 必须是告诉音频播放器停止的那个。

您可以为此使用 NSNotifications。每个NSNotification 都通过单例NSNotificationCenter 发送。以下是适合您情况的基本步骤:

  1. 您的主菜单会在准备就绪时注册通知。
  2. 您的主菜单有在通知触发时调用的方法。
  3. 您的子菜单在需要关闭音频时触发一个方法。
  4. 您的主菜单在准备关闭时取消注册。

希望这会有所帮助!

【讨论】:

  • 哎呀,我真的很抱歉格式化。我不太确定如何解决这个问题。
  • @Brett - 不用担心。你为什么不编辑你的问题来添加代码?大多数人在需要添加代码或澄清时都会这样做。注释不是代码的理想选择。不过,要获得这种格式,请使用 ` 而不是 '。
  • 我已经为您添加了该代码@Brett。实际上,我很想知道您的视图生命周期方法是什么样的。
  • 谢谢,我不确定如何回答这个问题。我有一个视图控制器,当按下按钮时,它会在主菜单顶部显示模态视图。视频也以模态视图的形式呈现。它就像一个模态视图链。这能回答问题吗?
  • 视图生命周期方法有viewDidLoad、viewWillAppear、viewDidAppear、viewWillDisappear、viewWillUnload等
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多