2013-11-05 2 views
0

У меня есть несколько AVPlayers, каждый по отдельности UIViewControllers играет разные песни.
Мне нужно приостановить один AVPlayer всякий раз, когда я играю другой (в противном случае аудио перекрывается).
Я бы хотел, чтобы пользователь проходил через приложение, когда музыка воспроизводится в фоновом режиме, поэтому приостановка AVPlayer на viewDidDisappear:(BOOL)animated не будет работать.
Каков наилучший способ доступа к элементам управления каждого отдельного AVPlayer?Несколько AVPlayers на отдельных UIViewControllers

+0

Это не совсем то, что вам нужно или нужно, но проверьте этот пример, он может дать некоторые рекомендации: http://stackoverflow.com/questions/9877110/objective-c-need-help-creating-an-avaudioplayer-singleton/9880450 # 9880450 –

ответ

1

По моему мнению, синглтон с 1 AVPlayer решает эту проблему хорошо. Таким образом, вы гарантируете, что для воспроизведения другой песни вам нужно остановить предыдущую. Затем в этом AVPLayerSingleton у вас есть частное свойство avPlayer. Можно определить два метода:

- (void)createPlayerWithSong:(NSString *)currentSong; 
- (void)destroyPlayer 

Тогда в вашем createPlayerWithSong вы можете проверить, если AVPlayer уже создан и уничтожить его и создать новый для каждой новой песни.

+0

Не уничтожил бы AVPlayer, чтобы остановить меня от продолжения песни, где я остановился? Я хочу приостановить его, а не убить. – Rhotick

+0

Да, было бы. Вы можете сэкономить время, в котором вы остановились, или больше AVPlayers. Однако я все же считаю, что синглтон - хороший вариант. –

0

Пар способов могли это сделать:

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

ИЛИ

Использование NSNotificationCenter для отправки уведомлений, когда вы хотите управлять AVPlayer на другой контроллер представления. Это может стать громоздким, если у вас много AVPlayers, которым вы хотите управлять.

Смежные вопросы