我使用AVFoundation Framework播放mp3文件,一切都很棒,我有2个按钮,我把它们放在一起,[播放和恢复.hidden功能],当用户播放音乐时[播放按钮将隐藏和恢复按钮un隐藏],所以如果用户更改视图,(音乐正在播放)并返回预览视图,按钮不能正常工作,这意味着只播放音乐和简历不起作用,我把我的代码放到viewDidLoad,我知道这是因为那,但我怎么能解决这个问题?
NSString * musicSonati = [[NSBundle mainBundle] pathForResource:@"music" ofType:@"mp3"];
myMusic = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:musicSonati] error:NULL];
myMusic.delegate = self;
myMusic.numberOfLoops = -1;
pauseM.hidden = YES;
play.hidden = NO;
答案 0 :(得分:1)
我的猜测是,您的“预览视图”的一大部分是处理通过AVAudioPlayer
框架播放声音的所有责任。您想要做的是重新设计您的应用,因此proxy object处理AVAudioPlayer
。在您的app委托中创建并初始化此代理对象,然后将其传递给根视图控制器,并传递给需要处理声音播放的任何其他视图控制器。
通过重新设计,您的“预览视图”只需询问(viewDidLoad
)您的声音代理对象是否正在播放声音(无论是通过审讯还是通过注册接收来自NSNotification
对象)并相应地设置自己的状态(即按钮)。