在我的桌面视图中,当您滚动单元格时,它们每个都会加载来自Youtube / Vimeo的视频截图/链接......
但是当我第一次开始滚动表视图时,我注意到每个webview都不断重新加载(我的意思是什么?)首先,我会一直滚动到表格视图的底部,让每个表格单元格加载Web视图因此,当我向上滚动到顶部时,我认为webview不需要再次重新加载,但是他们确实...
为了解决这个问题我在下面做了一些事情,但我遇到了另一个问题。当你第一次打开这个场景时,表格视图会正常加载所有可见单元格的webview,但是当你开始向下滚动到其他表格视图单元格时,我注意到它所做的只是我第一次打开场景时加载的最后一个webview并将其放入我向下滚动时遇到的所有其他网页视图中。
我的代码:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [[UITableViewCell alloc] init];
cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
NSMutableString *VideoID;
VideoID = [NSMutableString stringWithFormat:@"9394596"];
if(indexPath.row == 19) {
VideoID = [NSMutableString stringWithFormat:@"9820827"];
NSLog(@"19");
}
NSString *htmlStringToLoad = [NSString stringWithFormat:@"http://player.vimeo.com/video/%@?title=0&byline=0&portrait=0\%%22%%20width=\%%22%0.0f\%%22%%20height=\%%22%0.0f\%%22%%20frameborder=\%%230\%%22", VideoID];
// Configure the cell...
UIWebView *thisWebView = (UIWebView*)[cell viewWithTag:10];
NSString *contentsOfWebView = [thisWebView stringByEvaluatingJavaScriptFromString:@"document.getElementsByTagName('body')[0].innerHTML"];
UILabel *thisLabel = (UILabel*)[cell viewWithTag:20];
if([contentsOfWebView length] < 3) {
[thisWebView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:htmlStringToLoad]]];
NSLog(@"IF");
} else {
NSLog(@"ELSE");
}
thisLabel.text = @"Video Title";
cell.detailTextLabel.text = @"TEST";
return cell;
}
如何在表格视图中加载每个网页视图,如果我遇到已加载的网页视图,请不要加载它们?
编辑:第19行应加载不同的视频,但不是
答案 0 :(得分:0)
因为您正在重复使用表视图单元格,所以其中包含的Web视图已经加载了内容(它将重用现在已经滚动屏幕的任何可用单元格),因此在您的语句中:
if([contentsOfWebView length] < 3)
webview的内容大于3,因此不会重新加载,从而显示现有内容。