У пользователя есть tableView
с аудиофайлами с сервера. Когда пользователь начинает воспроизведение аудиофайла в любой ячейке ( AVPlayer ). Как воспроизвести следующий аудиофайл после автоматического завершения предыдущего?
UIViewController
с tableView
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
print("indexPath.row:", indexPath.row)
let record = self.records[indexPath.row]
let mainTabBarController = UIApplication.shared.keyWindow?.rootViewController as? MainTabBarController
mainTabBarController?.minimizePlayerDetails(record: record)
mainTabBarController?.playerDetailsView.playPause.setImage(#imageLiteral(resourceName: "PausePlayer"), for: .normal)
mainTabBarController?.playerDetailsView.miniPlayPauseButton.setImage(#imageLiteral(resourceName: "PausePlayerMini"), for: .normal)
tableView.deselectRow(at: indexPath, animated: true)
}
После этого у игрока появляется UIView
fileprivate func playRecord () {
guard let url = URL(string: record.recordUrl) else { return }
let playItem = AVPlayerItem(url: url)
player.replaceCurrentItem(with: playItem)
NotificationCenter.default.addObserver(self, selector: #selector(playerDidFinishPlaying), name: NSNotification.Name.AVPlayerItemDidPlayToEndTime, object: playItem)
player.play()
}
}
@objc func playerDidFinishPlaying(note: NSNotification) {
// print("Player finished")
currentTimeSlider.setValue(0, animated: true)
currentTimeLabel.text = "00:00"
self.playPause.setImage(#imageLiteral(resourceName: "PlayPlayer"), for: .normal)
self.miniPlayPauseButton.setImage(#imageLiteral(resourceName: "PlayPlayerMini"), for: .normal)
let zero = CMTime(seconds: 0.0, preferredTimescale: 1)
player.seek(to: zero, toleranceBefore: zero, toleranceAfter: zero)
player.pause()
}