返回上一个视图控制器(SWIFT)时,AVPlayer不会停止播放
我有两个视图控制器一个是TableViewController,其中我有一个音乐列表,另一个是UIViewController,它显示音乐细节并播放音乐。加载视图时音乐会自动播放,按下暂停按钮时音乐会暂停。但是,每当我返回上一个TableViewController以选择其他音乐时,音乐将继续播放。如果我选择另一种音乐,它们都在一起播放返回上一个视图控制器(SWIFT)时,AVPlayer不会停止播放,swift,Swift,我有两个视图控制器一个是TableViewController,其中我有一个音乐列表,另一个是UIViewController,它显示音乐细节并播放音乐。加载视图时音乐会自动播放,按下暂停按钮时音乐会暂停。但是,每当我返回上一个TableViewController以选择其他音乐时,音乐将继续播放。如果我选择另一种音乐,它们都在一起播放 override func viewDidLoad() { super.viewDidLoad() timeLabel.text = "00:
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 )
}
当视图消失时,必须暂停播放器。虽然
AVPlayer
没有停止方法,但您可以将速率设置为0.0
(或使用pause()
)并将currentItem
设置为零以达到相同的效果。尝试使用以下代码(未测试)
我测试了下面运行良好的代码:
override func viewWillDisappear(animated: Bool) {
audioPlayer.pause()
audioPlayer.currentItem = nil
}
您还可以使用:
audioPlayer.stop()AVPlayer不是UIKit的成员,他有自己的布局。无法分配给属性:“currentItem”是一个get onlyproperty@Penkey当然,我在UIView的子视图中有一个AVPlayer,我没有超级视图,但当我弹出主视图控制器时,该视图仍然没有从超级视图中删除。有什么建议吗?Hello@Penkey Suresh我的问题是当我转到上一个视图控制器歌曲播放停止时,如何播放歌曲。您能解决您的问题吗?
override func viewWillDisappear(animated: Bool) {
audioPlayer.pause()
audioPlayer.currentItem = nil
}