Аудио плеер в контейнере / XiB Swift - PullRequest
0 голосов
/ 30 сентября 2018

Я разрабатываю собственный аудиоплеер для потоковой передачи музыки для моего приложения, и мне нужно, чтобы он присутствовал на каждом экране в моем приложении внизу.Для этого я использовал UIContainerView и более поздние xib, но столкнулся с одинаковой проблемой в обоих случаях:

  • При выполнении перехода к другому прогрессу ВК из AudioPlayer - время, указанное в метке и индикаторе выполнения, не указывается.не обновляется, однако воспроизводится музыка.

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

На данный момент я разработал плеер, и он отлично работает только в одном VC.

У меня вопрос, как заставить его работать на каждом экране?

Структура моего приложения: 7 ВК, связанных с segues, и в нижней части каждого экрана есть вид контейнера, подключенного к одному ВК с плеером.

Заранее спасибо за вашу помощь!

1 Ответ

0 голосов
/ 30 сентября 2018

Каждый раз, когда вы используете переход, вы загружаете новый вид поверх вашего старого представления, поэтому вы можете слышать звук воспроизведения, все еще воспроизводимый в скрытом виде.

Когда вы переходите назад ивперед между представлениями, вы фактически не перемещаетесь назад и вперед между представлениями, вы загружаете новые представления поверх старых представлений - и это может вызвать серьезные проблемы по мере роста и усложнения вашего приложения.

Так что яизменил бы структуру приложения, вместо 7 VC, соединенных с Segues, - 1 главный VC с большим представлением контейнера и загрузил эти 6 других VC в представление контейнера.

Начните с создания нового контроллера представленияна раскадровке и поместите контейнерное представление в ваш новый View Controller.Сделайте так, чтобы Контейнер заполнил большую часть обзора, кроме того, где будет находиться ваш музыкальный проигрыватель.Удалите Контроллер Представления, который был создан, перетаскивая Контейнер, в котором он вам не нужен.

Чтобы сделать это действительно простым, перетащите контроллер навигации на раскадровку, он будет порождать 2 вида, но продолжайте.и удалите табличное представление.Control + Перетащите из ContainerView в контроллер навигации и выберите опцию «Вставить».Затем управляйте перетаскиванием из контроллера навигации в ваш оригинальный главный ViewController и выберите «Root View Controller».Теперь, когда вы нажмете на переход внутри контейнера, он просто изменит вид в контейнере.

...