playNextVideo Youtube swift - PullRequest
       6

playNextVideo Youtube swift

0 голосов
/ 27 июня 2018

Здравствуйте. Я пытаюсь воспроизвести серию видеороликов, по которым пользователь выполнил поиск, и в ней показано табличное представление с результатами, и я открываю новое представление, в котором воспроизводится видео. Я пытаюсь реализовать воспроизведение следующего и предыдущего видео функционально нажатием кнопки.

Я зашел так далеко, что в didSelectRowAt я получаю только идентификатор видео для видео, которое я нажал, и видео после этого кода ниже

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

        videoId = videos[indexPath.row].id.videoId
        videosTitle = videos[indexPath.row].snippet.title
        videosChannelTitle = videos[indexPath.row].snippet.channelTitle
        nextVideoId = videos[indexPath.row + 1].id.videoId

        vc.videoTitle = videosTitle
        vc.videoID = videoId
        vc.videoChannelTitle = videosChannelTitle
        vc.nextVideoID = nextVideoId

//        print(videoId)

        navigationController?.pushViewController(vc, animated: true)

    }

Я играю видео по следующему коду

@objc func playNextVideo() {

        guard let nextVideo = nextVideoID else { return }

        playVideo(videoId: nextVideo)


        }

вот функция playVideo

func playVideo(videoId: String) {

        let videoEmbdedString = "<html><body style='margin:0px;padding:0px;'><script type='text/javascript' src='http://www.youtube.com/iframe_api'></script><script type='text/javascript'>function onYouTubeIframeAPIReady(){ytplayer=new YT.Player('playerId',{events:{onReady:onPlayerReady}})}function onPlayerReady(a){a.target.playVideo();}</script><iframe id='playerId' type='text/html' width='\(String(describing: VidWidth))' height='\(String(describing: VidHeight))' src='http://www.youtube.com/embed/\(videoId)?enablejsapi=1&controls=0&autohide=1&rel=0&playsinline=1&autoplay=1' frameborder='0'&controls=0></body></html>"

        VideoWebView.loadHTMLString(videoEmbdedString, baseURL: nil)

    }

Таким образом, я могу воспроизводить только видео, которое я нажал, и видео после этого, и это имеет смысл, но как я могу получить идентификатор после этого, потому что после того, как я нажал кнопку, и она воспроизводит следующее видео, но когда я нажимаю его? снова он воспроизводит то же видео снова. как я могу обновить строку, в которой я нахожусь, хотя я отклонил представление

1 Ответ

0 голосов
/ 27 июня 2018

Это потому, что вы установили nextVideoId в tableViewDidSelect. И всякий раз, когда вы нажимаете кнопку воспроизведения далее, он получает nextVideoId только каждый раз.

Вы должны обновлять nextVideoId каждый раз, когда воспроизводите следующее видео, т. Е. В playNextVideo(), например:

...
guard let nextVideo = nextVideoId else { return }
// Here you should update the nextVideoId
// Like nextVideoId = videos[selectedIndexStoredInTheClass].id.videoId
....
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...