我有一个视图,用导航控制器推送另一个视图。在第二个视图中,我播放了一个音频,即使用户返回到第一个视图,我也想继续播放,弹出第二个视图,就像在iPod应用中一样。我怎么能这样做?
答案 0 :(得分:1)
您应该从视图控制器中抽象播放音频,因为它不是真正相关的功能(加上它会让你做你想做的事)。我建议创建一个单例对象,其功能是播放指定的歌曲,暂停/停止它,并从中检索状态(如isPlaying等)。我不会深入研究单身是什么/如何制作单身,因为其他堆栈溢出帖子和快速谷歌搜索将产生结果,但基本前提是你创建一个类并添加此方法:
+ (id)sharedInstance
{
static dispatch_once_t dispatchOncePredicate = 0;
__strong static id _sharedObject = nil;
dispatch_once(&dispatchOncePredicate, ^{
_sharedObject = [[self alloc] init];
});
return _sharedObject;
}
然后你可以创建一个这样的方法:
+ (void)playSongWithFile:(NSString *)fileName
{
// retrieve the file and play it
}
在#import你的单身对象的任何一个类中,你都可以调用:
[[MySingleton sharedInstance] playSongWithFile:@"awesomesong.mp3"];
单例对象是一个对象,只能在应用程序执行期间实例化一次并“生存”,因此无论视图控制器发生了什么,它都会继续执行您所说的内容。