如何在tableview的单元格内使用uiwebview并避免在重用单元格顶部加载页面[重复]

Posted

技术标签:

【中文标题】如何在tableview的单元格内使用uiwebview并避免在重用单元格顶部加载页面[重复]【英文标题】:How to use uiwebview inside a cell of a tableview and avoid load pages on top of reuses cell [duplicate] 【发布时间】:2015-10-16 15:17:48 【问题描述】:

我有一个 tableview,每个单元格都有一个 webview。在每个 webview 上,我从 youtube 加载不同的嵌入视频。

CardCell *cell = [self.tableView dequeueReusableCellWithIdentifier:@"CardCell"];
NSString *fullURL = [NSString stringWithFormat: @"https://youtube.com/embed/%@?",videoID];
NSURL *url = [NSURL URLWithString:fullURL];

NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
[cell.videoView loadRequest:requestObj];
cell.videoView.scrollView.scrollEnabled = NO;

我的问题是,每次我滚动表格时,由于重复使用单元格,在 webview 上它会显示上一个视频,一秒钟后它会显示正确的视频。

我试过用这个:https://github.com/youtube/youtube-ios-player-helper 但它每次都会创建一个不同的 web 视图,这使得滚动真的很慢而且根本不流畅。

有什么解决办法吗? `

【问题讨论】:

【参考方案1】:

你肯定可以使用 youtube ios 播放器库。

    创建一个自定义单元格并在单元格中添加UIView。 将UIView 类更改为YTPlayerView 子类 为您的自定义单元子类创建 YTPlayerView 的出口

    在prepareForReuse中,清除之前的视频:

    - (void)prepareForReuse 
        [super prepareForReuse];
    
        _youTubePlayer.hidden = YES;
        [_youTubePlayer stopVideo];
        [_youTubePlayer clearVideo];
        
    

在上面的 sn-p 中,_youTubePlayerYTPlayerView 的出口

您还可以为YTPlayerViewDelegate 设置代理,并根据视频状态更新您的单元格..

【讨论】:

这是我使用 YTPlayerView cloud.githubusercontent.com/assets/8028679/10536869/… cloud.githubusercontent.com/assets/8028679/10537232/… 时发生的情况@ 到底发生了什么?

以上是关于如何在tableview的单元格内使用uiwebview并避免在重用单元格顶部加载页面[重复]的主要内容,如果未能解决你的问题,请参考以下文章

IOS swift如何在tableView单元格内创建一条小水平线

在单元格内编辑textview时,将另一个单元格添加到tableview

tableview 单元格内的集合视图重新加载数据

当在同一个单元格内单击按钮时,如何在自定义表格视图单元格内隐藏/显示特定视图

TableView单元格内的TableView,自动调整单元格高度

完成在单元格内编辑 textview 后向 tableview 添加另一个单元格