如何在所有viewcontrollers中访问AVAudioPlayer?

时间:2014-02-25 13:42:56

标签: ios objective-c avaudioplayer

这就是我的想法。一个TableViewController。当我点击其中一个单元格时,会显示另一个viewcontroller,其中包含AVAudioPlayer的实例,并有一个搜索栏和停止和暂停按钮。然后,当我关闭播放器视图控制器时,音乐播放并且不会停止(我已成功完成整个事情,直到这里)。现在我想创建一个“正在播放”按钮。当我点击它时,它会带我回到音频播放器ViewController,我可以看到歌曲的进度。关于如何做到这一点的任何想法?我的问题是我不知道如何存储在后台播放的歌曲的信息,并不断更新这些信息。

3 个答案:

答案 0 :(得分:2)

您可以通过使用类方法创建单例类来实现此目的,该方法将返回其AVAudioPlayer类的实例。所有AVAudioPlayer操作都应该在这个单例类上进行管理。通过这种方式,您可以使用单个对象实现AVAudioPlayer,该对象可在所有视图控制器类中以其当前状态访问。方法将被称为:

[[MyAVAudioPlayer getInstance] getStatus];
[[MyAVAudioPlayer getInstance] play];

类结构可以是:

@interface MyAVAudioPlayer : AVAudioPlayer{

}

+(MyAVAudioPlayer *)getInstance;
-(void)playWithURL:(NSURL *)url;
-(void)play;
-(float)status; 
@end

答案 1 :(得分:1)

使用AVAudioPlayer创建单例类。在这里查看question

答案 2 :(得分:0)

您正在寻找NSNotification您可以向属性添加观察者,以便在此属性更改时检查并更新您的单元格。