更改AVPlayer视频以重现单击表格视图单元格

时间:2017-05-06 21:35:08

标签: ios swift3 avplayer avplayerviewcontroller

我不明白为什么AVPlayer在我点击TableView的一个单元格时不会改变视频,该单元格调用设置另一个视频流的功能来重现。你可以帮帮我吗。 代码如下:

class VideoPlayerController: AVPlayerViewController {

override func viewDidLoad() {
    guard let url = URL(string: "http://live1.msf.ticdn.it/Content/HLS/Live/Channel(CH01HA)/Stream(03)/index.m3u8") else { return }
    let playerItem = AVPlayerItem(url: url)
    //player = AVQueuePlayer(playerItem: playerItem)
    player = AVPlayer(playerItem: playerItem)
    player?.play()
}

func setCanaleDaRiprodurre(url:String){
    let urlDaRiprodurre : URL? = URL.init(string: url)
        let playerItem = AVPlayerItem(url: urlDaRiprodurre!)
        player?.pause()
        player?.replaceCurrentItem(with: playerItem)
        player?.play()
        print("Hello")
}

这里使用另一个流URL调用函数“setCanaleDaRiprodurre”的TableViewController的代码。

override func tableView(_tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    let  VideoPlayerController = self.storyboard?.instantiateViewController(withIdentifier: "player") as! VideoPlayerController
    VideoPlayerController.setCanaleDaRiprodurre(url: menuItems[indexPath.row].stream_url!)
     }

1 个答案:

答案 0 :(得分:0)

VideoPlayerController中的didSelectRowAt:超出范围,才有可能做任何事情。

您的班级已经 VideoPlayerController了吗?如果您有办法替换当前频道,为什么不在didSelectRowAt:

中执行此操作
override func tableView(_tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    self.setCanaleDaRiprodurre(url: menuItems[indexPath.row].stream_url!)
}

为清楚起见,您应避免为变量提供与其类相同的名称,因此不应使用

let VideoPlayerController = ...

做类似

的事情
let  VideoPlayerController = ...