【问题标题】:Continue to perform method even when it's ViewController disappear in iOS继续执行方法,即使它的 ViewController 在 iOS 中消失
【发布时间】:2012-01-21 04:36:39
【问题描述】:

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

【问题讨论】:

    标签: iphone ios methods continue


    【解决方案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"];
    

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

    【讨论】:

    • 感谢您的回答!如果你投票支持我的帖子,我将获得 15 级的声望,并且也可以投票支持你的帖子。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-02
    • 1970-01-01
    • 2021-07-27
    • 2012-02-18
    • 1970-01-01
    相关资源
    最近更新 更多