Универсальный аудиоплеер с элементами управления в нескольких контроллерах вида
Приложение Audioboo iOS имеет универсальный аудиоплеер с элементами управления (например, кнопка воспроизведения/паузы.) вид всегда виден на загруженных контроллерах вида при воспроизведении контента. Кроме того, иногда сами контроллеры вида также имеют элементы управления (кнопка воспроизведения / паузы и таймер обратного отсчета)
Мой вопрос заключается в том, как лучше всего узнать при загрузке представления, что проигрыватель воспроизводит соответствующее содержимое, и обновить состояние управления и таймер этого представления?
Проверьте эти ссылки на скриншоты http://cl.ly/image/2k213Q0L2U2w http://cl.ly/image/3o0F0a150d1T // Вид нижнего плеера всегда виден при перемещении между контроллерами вида.
Примечание: Это мой первый вопрос здесь, поэтому, пожалуйста, дайте мне знать, если у вас есть какие-либо вопросы или вы хотите, чтобы я что-то прояснил:]
2 ответа:
В вашем классе, который управляет аудиоплеером, вы должны добавить public property, который будет указывать на текущую проигрываемую сущность. Например:
@interface MyAudioPlayer : AVPlayer ... @property (nonatomic, strong) Song *currentSong ... @end
И не забудьте назначить соответствующую песню этому свойству всякий раз, когда новая песня начинает играть.
Тогда вы сможете получить доступ к этой текущей песне с любого контроллера вида.
UPD:
После некоторых разъяснений я публикую обновление для дальнейшего использования. Для того, чтобы управлять перепиской между игроками часть данных и пользовательского интерфейса для нескольких
UIViewControllers
Существует 3 основных подхода:1) Вы можете использовать
NSNotification
, отправленные классом player manager, когда появляется какое-либо событие (например, изменение песни и т. д.) и перехватывается вашими контроллерами вида.2) Вы можете использовать KVO и подписывать контроллеры вида на изменения в классе плеера.
3) Возможно, вы захотите взглянуть наReactiveCocoa , который является заменой парадигмы кво.
Создайте пользовательскую панель вкладок, которая воспроизводит песню и имеет панель для отслеживания прогресса и так далее. Затем, когда вы измените представления, представление "текущая песня" не изменится и останется прежним. Вы также можете просто добавить пользовательский вид в верхней части экрана с помощью AppDelegate. Надеюсь, это поможет!