私のテーブルビューでは、セルをスクロールすると、それぞれがYoutube/Vimeoからのビデオスクリーンショット/リンクをロードします...
しかし、最初にテーブル ビューをスクロールし始めたとき、各 Web ビューが継続的にリロードされていることに気付きました (どういう意味ですか?) まず、テーブル ビューの一番下までスクロールして、各テーブル セルに Web ビューをロードさせます。一番上までスクロールして、Webビューを再度リロードする必要はないと考えましたが、そうしました...
この問題を解決するために、以下のことを行いましたが、別の問題に遭遇しました。このシーンを最初に開いたとき、テーブル ビューはすべての可視セルの Web ビューを正常にロードしますが、他のテーブル ビュー セルにスクロールし始めると、最初にシーンを開いたときにロードした最後の Web ビューを取得するだけであることに気付きました。下にスクロールしたときに出くわした他のすべてのWebビューにそれを入れました。
私のコード:
- (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;
}
テーブル ビューにすべての Web ビューをロードするにはどうすればよいですか? 既にロードされている Web ビューに遭遇した場合は、それらをロードしないでください。
編集: 行 19 は別のビデオをロードする必要がありますが、そうではありません