在我的tableview,你通過細胞滾動他們每個負載從Youtube/Vimeo的視頻截圖/鏈接...加載一個UIWebView在一個TableView中細胞
但是,當我第一次開始通過表視圖滾動我注意到每個webview不斷重新加載自己(我的意思是什麼?)首先,我將滾動到我的表格視圖的底部,讓每個表格單元格加載Web視圖,因此當我回滾到頂部時,我認爲webviews將不需要重新加載,但他們沒有...
爲了解決這個問題,我做了一些事情,但我遇到了另一個問題。當你第一次打開這個場景時,表格視圖通常會加載所有可見單元格的webviews,但是當你開始向下滾動到其他表格視圖單元格時,我注意到它所做的只是當我第一次打開場景時加載的最後一個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應該會載入目前存在的視頻,但它並不
gamozzii我怎麼能不重用細胞? – 2012-07-13 00:40:15
將它們保存到一個NSMutableArray中,如果該數組上的索引爲空,則加載一個新的。但這會殺死內存使用量。爲了節省內存,你可以將webview內容緩存到另一個數組或文件中,並從那裏加載它,但重用單元格。 – Weston 2012-07-13 01:22:34