Ios 由于表视图中的可重用单元格,当Youtube播放器滚动出视图时会丢失它

Ios 由于表视图中的可重用单元格,当Youtube播放器滚动出视图时会丢失它,ios,swift,tableview,swift4,ytplayerview,Ios,Swift,Tableview,Swift4,Ytplayerview,我正在建立一个类似instagram的新闻源。每篇文章要么是一首spotify流媒体歌曲,要么是在自己的播放器视图中播放的Youtube视频。如果我播放一个视频单元,然后滚动浏览提要,即使你看不见,视频仍会继续播放。此时,如果我滚动到spotify帖子并点击play,我希望视频停止播放。我不能这样做。我试图跟踪“上次播放”的视频单元并停止YTplayer实例,但该单元在该点被重用,并且不存在。所以我不能那样做。有人知道我该怎么做吗 我的自定义tableview单元格类具有YTplayer视图,我

我正在建立一个类似instagram的新闻源。每篇文章要么是一首spotify流媒体歌曲,要么是在自己的播放器视图中播放的Youtube视频。如果我播放一个视频单元,然后滚动浏览提要,即使你看不见,视频仍会继续播放。此时,如果我滚动到spotify帖子并点击play,我希望视频停止播放。我不能这样做。我试图跟踪“上次播放”的视频单元并停止YTplayer实例,但该单元在该点被重用,并且不存在。所以我不能那样做。有人知道我该怎么做吗


我的自定义tableview单元格类具有YTplayer视图,我只加载一些带有youtube视频ID的单元格,这些单元格在加载表视图时会成为youtube视频单元格。

我认为您需要实现

func tableView(_ tableView: UITableView,
           didEndDisplaying cell: UITableViewCell,
           forRowAt indexPath: IndexPath) {

   // access the playing video of the cell and stop it 

}

我解决了。在我的dequeueReusableCell之后,我检查该cell是否包含视频帖子。我使用我在帖子中设置的字符串标志来执行此操作。如果是,我将tableview控制器声明为其播放代理。从那时起,如果我播放该单元格并滚动到spotify单元格并播放该单元格,我将使用player.stopVideo()停止Youtube播放器。

这将在单元格滚动出视图时停止播放视频,对吗?这就是我解释文档的意思。我不想那样。我希望视频即使在看不见的情况下也能继续播放,并且只有在播放另一篇文章时才会停止。我面临同样的问题,请您描述一下您的解决方案。您好@AbecardioPoint,我刚刚标记了我的答案,并提供了更多详细信息,让我知道这是否适用于您。当用户点击Youtube单元格时,我基本上会将我的TableViewController声明为其播放代理。声明一个YTPlayerView变量。在viewDidLoad中将控制器声明为委托。现在您有了一个youtube playerview,您可以在主控制器的任何位置停止/启动。当用户点击youtube单元格时,我只会使控制器YTPLAYERVIW=单元格的YTPLAYERVIW<代码>变量youtubeplyer:YTPlayerView?。在viewDidLoad:
self.youtubeplayer?.delegate=self
中,当用户点击单元格时:
youtubeplayer=tappedCell.playerView