Я работаю над аудиоплеером и столкнулся с такой ситуацией: у меня есть TrackDetailView, который открывается для воспроизведения трека, когда я нажимаю на ячейку TableView. Также я реализовал фоновое воспроизведение и MPNowPlayingInfoCenter. Когда я нажимаю кнопку «Пауза» или «Воспроизведение» в MPNowPlayingInfoCenter, я хочу, чтобы изображение кнопки изменилось и в моем TrackDetailView, но я просто не могу этого сделать. Буду рад любой помощи. Важное примечание (!) TrackDetailView и MPNowPlayingInfoCenter находятся в разных классах. Когда ставлю их в один класс, все работает без проблем. Мой код:
class TrackDetailView: UIView {
var audioPlayer = AudioPlayer()
...
@IBOutlet var playPauseButton: UIButton!
...
//Loading with view
func set() {
setupMediaPlayerNotificationView()
}
}
class AudioPlayer {
var trackDetailView: TrackDetailView?
func setupMediaPlayerNotificationView() {
let commandCenter = MPRemoteCommandCenter.shared()
commandCenter.playCommand.addTarget { [unowned self] event in
if self.player.rate == 0.0 {
self.player.play()
self.trackDetailView?.playPauseButton.setImage(#imageLiteral(resourceName: "pause"), for: .normal)
}
return .commandFailed
}
commandCenter.pauseCommand.addTarget { [unowned self] event in
if self.player.rate == 1.0 {
self.player.pause()
self.trackDetailView?.playPauseButton.setImage(#imageLiteral(resourceName: "play"), for: .normal)
return .success
}
return .commandFailed
}
...
}
}
Думаю, у меня проблема с экземпляром класса TrackDetailView.