2012-07-12 60 views
1

在我的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應該會載入目前存在的視頻,但它並不

回答

0

因爲要重複使用包含在已經擁有的內容加載Web視圖表格視圖單元(它會重複使用已現任何可用電池被滾動關閉屏幕),因此在你的語句:

if([contentsOfWebView length] < 3) 

web視圖的內容是大於3,因此不會進行重裝,從而顯示現有的內容。

+0

gamozzii我怎麼能不重用細胞? – 2012-07-13 00:40:15

+0

將它們保存到一個NSMutableArray中,如果該數組上的索引爲空,則加載一個新的。但這會殺死內存使用量。爲了節省內存,你可以將webview內容緩存到另一個數組或文件中,並從那裏加載它,但重用單元格。 – Weston 2012-07-13 01:22:34