4

我正在使用YTPlayerView内部UICollectionView(水平滚动),屏幕上一次可见一个项目。我添加了一个UIView内部自定义单元格并将类名更改为YTPlayerView身份检查器中的。

因为YTPlayerView我启用了自动播放并且播放效果很好。但是,当我滚动到下一个或上一个项目时,我想停止播放器。我尝试通过获取自定义单元格对象来在“didEndDisplayingCell”中停止播放器NSIndexPath。但是YTPlayerView具有自定义单元格对象的实例在“didEndDisplayingCell”中返回(null)。所以我无法停止视频播放。滚动到下一个/上一个项目时如何停止视频播放?

我有 3 个不同的自定义UICollectionView单元格来显示文本、图像和视频(YTPlayerView 或 AVPlayer)。

编辑 我试图通过保存以前的可见单元格索引路径来获取“cellForItemAtIndexPath”中的自定义视频单元格对象。而且我能够获取自定义单元格对象,但是当我尝试获取它的实例时,YTPlayerView它正在为YTPlayerView.

谁能建议我处理 youtube 视频的正确方法UICollectionView

4

1 回答 1

1

行,

现在我已经理解了这个问题,但是当我尝试自己时,我在- (void)collectionView:(UICollectionView *)collectionView didEndDisplayingCell:(UICollectionViewCell *)cell forItemAtIndexPath:(NSIndexPath *)indexPath委托中得到了一个完全有效的单元格引用。

那里不应该为空。每次单元格消失时,您都应该得到这个,您应该检查隐藏单元格的类型!

如果该单元格是您的 YouTube 单元格的一种类型,则仅停止视频播放。这是一个粗略的示例:

- (void)collectionView:(UICollectionView *)collectionView didEndDisplayingCell:(UICollectionViewCell *)cell forItemAtIndexPath:(NSIndexPath *)indexPath {
    if ([cell isKindOfClass:[YouTubeVideoCell class]]) {
        YouTubeVideoCell *youtubeCell = (YouTubeVideoCell*)cell;
        [youtubeCell stopVideo];
    }
}

YouTubeVideoCell 应该是您的自定义 YTPlayerView 单元子类,而 stopVideo 应该是单元的公共方法,您可以在其中停止 YTPlayerView 视频。

于 2016-05-19T08:52:42.537 回答