Продолжайте выполнять метод, даже если его ViewController исчезнет в iOS - PullRequest
1 голос
/ 21 января 2012

У меня есть вид, который выдвигает другой вид с помощью контроллера навигации. В этом втором виде я воспроизводю аудио, которое хочу продолжить, даже когда пользователь возвращается к первому виду, выталкивая второй вид, как в приложении для iPod. Как я могу это сделать?

1 Ответ

1 голос
/ 21 января 2012

Вы должны абстрагировать звук, воспроизводимый на вашем контроллере представления, так как он на самом деле не связан с функциональностью (и плюс он позволит вам делать то, что вы хотите). Я бы предложил создать одноэлементный объект, функциональность которого заключается в воспроизведении указанной песни, ее приостановке / остановке и получении из нее статусов (таких как 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
}

И из любого класса, в который вы # импортируете свой одноэлементный объект, вы можете вызвать:

[[MySingleton sharedInstance] playSongWithFile:@"awesomesong.mp3"];

Одноэлементный объект - это объект, который может быть создан только один раз и «живет» в течение всего времени выполнения вашего приложения, поэтому он будет продолжать делать то, что вы говорите, независимо от того, что происходит с вашими контроллерами представления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...