Воспроизведение аудио файлов один за другим с помощью UITableView (swift) - PullRequest
0 голосов
/ 27 июня 2019

У пользователя есть 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()

    }
...