1

私のテーブルビューでは、セルをスクロールすると、それぞれが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 は別のビデオをロードする必要がありますが、そうではありません

4

1 に答える 1

0

テーブル ビュー セルを再利用しているため、含まれている Web ビューには既にコンテンツが読み込まれています (画面からスクロールされた使用可能なセルを再利用します)。

if([contentsOfWebView length] < 3)

webview のコンテンツが 3 より大きいため、リロードは行われず、既存のコンテンツが表示されます。

于 2012-07-13T00:22:53.257 に答える