我正在开发一个音频播放器,并遇到了这种情况:我有一个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类的一个实例上遇到了问题。
发布于 2020-08-01 20:24:20
对于此实例,您需要确保
var audioPlayer = AudioPlayer()你设置
audioPlayer.trackDetailView = selfe.x在这里
func set() {
audioPlayer.trackDetailView = self
audioPlayer.setupMediaPlayerNotificationView()
}https://stackoverflow.com/questions/63204559
复制相似问题