我有一个 View 可以使用导航 Controller 推送另一个 View 。在第二个 View 中,我播放了一个音频,即使用户返回到第一个 View ,我也想继续播放,弹出第二个 View ,就像在 iPod 应用程序中一样。我该怎么做?
最佳答案
你应该从你的 View Controller 中抽象出你的音频播放,因为它不是真正相关的功能(而且它会让你做你想做的)。我建议创建一个单例对象,其功能是播放指定的歌曲、暂停/停止它并从中检索状态(例如正在播放等)。我不打算深入探讨什么是单例/如何制作单例,因为其他堆栈溢出帖子和快速谷歌搜索会产生结果,但基本前提是您创建一个类并将此方法添加到其中:
+ (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"];
单例对象是只能实例化一次并在应用程序执行期间“持续存在”的对象,因此无论 View Controller 发生什么情况,它都会继续执行您告诉它的操作。
关于iphone - 继续执行方法,即使它的 ViewController 在 iOS 中消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8950698/