1

我有一个使用导航控制器推送另一个视图的视图。在第二个视图中,我播放一个我想继续播放的音频,即使用户返回第一个视图,弹出第二个视图,就像在 iPod 应用程序中一样。我怎样才能做到这一点?

4

1 回答 1

1

你应该从你的视图控制器中抽象出你的音频播放,因为它不是真正相关的功能(而且它会让你做你想做的事)。我建议创建一个单例对象,其功能是播放指定的歌曲,暂停/停止它,并从中检索状态(例如 isPlaying 等)。我不打算深入探讨单例是什么/如何制作单例,因为其他堆栈溢出帖子和快速 google 搜索会产生结果,但基本前提是您创建一个类并将此方法添加到其中:

+ (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"];

单例对象是一个只能被实例化一次并且在你的应用程序执行期间“继续存在”的对象,所以无论你的视图控制器发生了什么,它都会继续做你告诉它的事情。

于 2012-01-21T04:44:37.917 回答