簡體   English   中英

如何從 MPNowPlayingInfoCenter 訪問 ViewController

[英]How can I get access to ViewController from MPNowPlayingInfoCenter

我正在使用音頻播放器並遇到這種情況:當我單擊 TableView 單元格時,我有一個 TrackDetailView 打開以播放曲目。 我還實現了后台播放和 MPNowPlayingInfoCenter。 當我在 MPNowPlayingInfoCenter 中按下暫停或播放按鈕時,我希望按鈕圖像在我的 TrackDetailView 上也發生變化,但我就是做不到。 我會很高興得到任何幫助。 重要說明(.) TrackDetailView 和 MPNowPlayingInfoCenter 位於不同的類中。 當我將它們放在一個 class 中時,一切正常:我的代碼:

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 class 的實例有疑問。

您需要確保對於此實例

var audioPlayer = AudioPlayer()

你設置

audioPlayer.trackDetailView = self

前在這里

func set() {
  audioPlayer.trackDetailView = self
  audioPlayer.setupMediaPlayerNotificationView()
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM