我不明白为什么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!)
}
答案 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 = ...