Приложение на переднем и заднем плане - PullRequest
0 голосов
/ 18 декабря 2011

В моем контроллере просмотра есть кнопка ВКЛ / ВЫКЛ, которая воспроизводит музыку, когда она включена пользователем. Теперь, если пользователь нажимает кнопку «Домой» на iPhone и снова запускает мое приложение, кнопка отображается как «ВКЛ», но музыка не воспроизводится. Таким образом, пользователь должен снова нажать ON-OFF-ON, чтобы музыка снова начала воспроизводиться.

Кто-нибудь знает, как я могу вызвать кнопку контроллера моего представления ON / OFF, чтобы я мог установить ее в положение OFF, когда приложение входит в фоновый режим, и включить его и воспроизводить музыку, когда она входит в forground в этих делегатах приложения?

Я знаю, что мне нужно записать в plist-файл информацию о состоянии кнопки и музыки на applicationDidEnterBackground. Я не знаю, как мне получить доступ к этим действиям из appdelegate, поскольку они определены в моем viewcontroller.

Аналогично, когда приложение выходит на передний план, я прочитаю сохраненный файл plist, а затем снова задаю состояние музыки и кнопку. Опять же, я не знаю, как вызывать методы моего контроллера из делегата.

- (void)applicationDidEnterBackground:(UIApplication *)application
{

     NSLog(@"Inside applicationDidEnterBackground");
}

- (void)applicationWillEnterForeground:(UIApplication *)application
{

    NSLog(@"Inside applicationWillEnterForeground");

}

Ответы [ 2 ]

0 голосов
/ 18 декабря 2011

Все, что вам нужно сделать, это подписаться на уведомление UIApplicationDidEnterBackgroundNotification в вашем контроллере представления

[[NSNotificationCenter defaultCenter] addObserver: self
                                         selector: @selector(handleEnteredBackground:) 
                                             name: UIApplicationDidEnterBackgroundNotification
                                           object: nil];

Также есть уведомление для DidEnterForeground.

0 голосов
/ 18 декабря 2011

Одной из возможных методологий является отправка сообщения от делегата приложения на контроллеры представления для сохранения или восстановления состояния.Тогда контроллер представления, который имеет доступ к своему внутреннему состоянию, может реализовать любые необходимые методы сохранения и восстановления.

Если делегат приложения не содержит непосредственно ссылку на активный контроллер представления, он может отправить сообщение внизцепочка к корневому контроллеру представления, который может затем отправить сообщение следующему контроллеру представления и т. д., каждый контроллер сохраняет все, что считает важным на пути вниз.

...