2015-06-21 75 views
4

我有兩個視圖控制器一個TableViewController我有一個音樂列表和一個UIViewController它顯示音樂細節和播放音樂。音樂會在視圖加載時自動播放,並在按下暫停按鈕時暫停播放。但是,每當我回到前一個TableViewController選擇另一首音樂時,音樂就會繼續播放。如果我選擇另一種音樂,他們兩個一起玩AVPlayer不會停止播放當回到以前的視圖控制器(SWIFT)

override func viewDidLoad() { 
    super.viewDidLoad() 

    timeLabel.text = "00:00" 

    if let object = currentObject { 

     audioTitle.text = object["audioTitle"] as? String 
     let days = object["daysActive"] as! Int 
     daysActive.text = "Powertalks: Day \(days)" 

     var initialThumbnail = UIImage(named: "trc_app_icon.png") 

     audioImage.image = initialThumbnail 
     if let thumbnail = object["image"] as? PFFile { 
      audioImage.file = thumbnail 
      audioImage.loadInBackground() 
     } 

     if let audioFile = object["audioFile"] as? PFFile { 

      if let audioPath: String = audioFile.url { 

      audioPlayer = AVPlayer(URL: NSURL(string: audioPath)) 

      audioSlider.minimumValue = 0 
      audioSlider.maximumValue = Float(CMTimeGetSeconds(audioPlayer.currentItem.asset.duration)) 
      audioSlider.value = Float(CMTimeGetSeconds(audioPlayer.currentTime())) 

      audioPlayer.volume = volumeSlider.value 

      playAudio() 

      } 

     } 

    } 

    timer = NSTimer.scheduledTimerWithTimeInterval(1.0, target: self, selector: Selector("updateSlider"), userInfo: nil, repeats: true) 

} 

回答

0

您必須在視圖消失時暫停播放器。雖然AVPlayer沒有停止方法,但您可以將rate設置爲0.0(或使用pause())並將currentItem設置爲零以實現相同的效果。嘗試使用下面的代碼(未經測試)

override func viewWillDisappear(animated: Bool) { 
    audioPlayer.pause() 
    audioPlayer.currentItem = nil 
} 
+0

AVPlayer不是UIKit的成員,他有自己的佈局。 –

+3

不能分配給屬性:'currentItem'是隻能得到的屬性 –

+0

@Penkey Suresh,我在UIView的子視圖中有一個AVPlayer,我沒有那個超級視圖,但仍然沒有從超級視圖中刪除當我彈出主視圖控制器。對此有何建議? –

相關問題