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

Приложение 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. Надеюсь, это поможет!

  • UIWebview удаляет кран для фокусировки
  • Сбой приложения NSCache
  • SpriteKit и UIScrollView и HUD
  • Ошибка при прикреплении большого PDF-файла к композитору iOS 9.2.1
  • Случайное размещение UILabel имеет неправильный размер после вращения
  • Как добавить основное ограничение на правый край UILabel в раскадровке?
  • Странный сбой: исключение NSRangeException с «бесполезным» стеклом
  • Вызов команды javascript в UIWebView
  • Безопасность данных Quickblox
  • Как я могу отображать свои изображения в моем диспетчере просмотра так же, как и снимок экрана ниже?
  • NSURLConnection вызывает соединениеDidFinishLoading перед этим должен?
  • Interesting Posts

    Соответствие закодированным в Base64 строкам HMAC-SHA1 в iOS / Objective-c Ruby / Rails

    Как дождаться завершения webViewDidFinishLoad

    Неожиданные результаты публикации в открытом графике из приложения ios. Все параметры, кроме фотографии, не отображаются в facebook, но они работают в Google Explorer API

    Обнаруживать другое приложение iOS с помощью systcl

    Основные данные: миграция по-прежнему происходит, когда вы просто добавляете или переименовываете только одно свойство?

    PDF-ресурсы для xcode из psd с векторными слоями (или группами слоев)

    Нажатие UIPrintInteractionController в стек UINavigationController

    Добавьте пользовательскую палитру в IB, которая распространяется, если цвет изменяет iOS

    Обнаружение массива с проблемой (режим отладки)

    Ориентация устройства запускает весь контроллер просмотра в приложении панели вкладок.

    Swift 3 – ошибки контроллера Multi View

    Центр 4 изображения с адаптивной компоновкой в ​​iOS9

    как читать большое количество (28 символов) периферийных данных имени Bluetooth-ключа Bluetooth LE каждый раз по центральному методу didDiscoverPeripheral?

    Экран не для наполнения игры SpriteKit

    Локальное местоположение GPS на устройстве IOS

    Давайте будем гением компьютера.