由于 table 视图中的可重复使用单元格,当 Youtube 播放器滚出视图时丢失

Lose Youtube player when it scrolls out of view because of reusable cells in table view

我正在构建一个类似于新闻提要的 Instagram。每个 post 要么是 spotify 流媒体歌曲,要么是在其自己的 YTplayer 视图中播放的 Youtube 视频。如果我播放一个视频单元格然后滚动浏览提要,即使您看不到视频也会继续播放。此时,如果我滚动到 spotify post 并点击播放,我希望视频停止播放。我无法做到这一点。我试图跟踪 'last played' 视频单元格并停止 YTplayer 实例,但该单元格在那时被重用并且不存在。所以我不能那样做。有人知道我该怎么做吗?

我的自定义 tableview 单元格 class 有 YTplayer 视图,我只加载了一些带有 youtube 视频 ID 的单元格,这些单元格在 table 视图时成为 Youtube 视频单元格已加载。

我认为你需要实施

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

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

}

我解决了。在我的 dequeueReusableCell 之后,我检查单元格是否包含视频 post。我使用我在 post 中设置的字符串标志来执行此操作。如果是这样,我将我的 tableview 控制器声明为它的播放委托。从那以后,如果我播放那个单元格并滚动到一个 spotify 单元格并播放那个单元格,我会使用 player.stopVideo() 来停止 Youtube 播放器。