Универсальный аудиоплеер с элементами управления в нескольких контроллерах просмотра

Приложение Audioboo iOS имеет универсальный аудиоплеер с элементами управления (например, кнопкой воспроизведения / паузы). Просмотр всегда отображается на загруженных диспетчерах просмотра при воспроизведении контента. Также иногда сами контроллеры представления также имеют элементы управления (кнопка воспроизведения / паузы и таймер обратного отсчета)

Мой вопрос заключается в том, что лучше всего узнать, когда загружаете представление, которое игрок воспроизводит в своем соответствующем контенте, и обновляет состояние и таймер контроля этого вида?

Проверьте эти ссылки на скриншот http://cl.ly/image/2k213Q0L2U2w http://cl.ly/image/3o0F0a150d1T // При просмотре контроллеров представлений нижний игрок всегда отображается.

ПРИМЕЧАНИЕ. Это мой первый вопрос, когда-либо здесь, поэтому, пожалуйста, дайте мне знать, если у вас есть какие-либо вопросы или вы хотите, чтобы я что-то прояснил:]

В вашем классе, который управляет аудиоплеером, вы должны добавить общедоступное свойство, которое будет указывать на текущий исполняемый объект. Например:

@interface MyAudioPlayer : AVPlayer ... @property (nonatomic, strong) Song *currentSong ... @end 

и не забудьте назначить соответствующую песню этому свойству всякий раз, когда начнется воспроизведение новой песни.

Затем вы сможете получить доступ к этой текущей песне с любого контроллера вида.

UPD:

После некоторого уточнения я публикую обновление для дальнейшего использования. Для управления перепиской между данными игрока и частью пользовательского интерфейса для нескольких UIViewControllers существует 3 основных подхода:

1) Возможно, вы захотите использовать NSNotification , отправленную классом менеджера проигрывателя, когда появится какое-то событие (например, изменение песни и т. Д.) И перехвачено вашими контроллерами.

2) Вы можете использовать KVO и подписывать свои контроллеры просмотров на изменения в классе игроков.

3) Вы можете взглянуть на ReactiveCocoa, который является заменой парадигмы KVO.

Создайте пользовательскую вкладку, в которой воспроизводится песня, и есть панель для отслеживания прогресса и т. Д. Затем, когда вы меняете представления, просмотр текущей песни не изменится и останется неизменным. Вы также можете добавить пользовательский вид в верхней части экрана с помощью AppDelegate. Надеюсь, это поможет!