2011-06-20 48 views
0

你好,我正在試圖獲取facebook用戶的個人資料圖像在表格的cell.image。但它會減慢滾動表view.Then我以前Asynchronous loading of image鏈接,但我很困惑,我如何使用這個在我的表的方法UIImage在uitableViewcell放緩滾動表

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 

     static NSString *CellIdentifier = @"Cell"; 

     UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
     if (cell == nil) { 
      cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease]; 
     } 

     cell.textLabel.font = [ UIFont fontWithName:@"Arial" size:10.0]; 
     cell.textLabel.numberOfLines = 0; 

     cell.textLabel.text = [NSString stringWithFormat:@"%@",[(Facebook *)[dummyArray objectAtIndex:indexPath.row] sender]]; 

     cell.detailTextLabel.text =[NSString stringWithFormat:@"%@",[(Facebook *)[dummyArray objectAtIndex:indexPath.row] post]]; 

     NSString *get_string = [NSString stringWithFormat:@"%@/picture",[(Facebook *)[dummyArray objectAtIndex:indexPath.row]senderId]]; 

     AsynchronousImageView *image = [[AsynchronousImageview alloc]init]; 
[image loadImagewithUrlString:getString]; 

     FbGraphResponse *fb_graph_response = [fbGraph doGraphGet:get_string withGetVars:nil]; 

     UIImageView *image_view = [[UIImageView alloc] initWithImage:fb_graph_response.imageResponse]; 


     cell.imageView.image = image_view.image; 



     [image_view release]; 


     return cell; 
    } 

回答

4

它會減慢,因爲你設置每次cellForRowAtIndexPath:被稱爲時間image。僅在if (cell == nil)塊內將圖像添加到單元格的imageView。然後你會看到滾動的改進。

+3

不是。當他重新使用單元格時,他需要將圖像重置爲該索引的正確值。 –

+0

謝謝。它現在工作正常。在這種情況下,我不需要使用這個異步映像加載... – iProgrammer

+0

@Andrei Stanescu,是的。但它超出了這個問題的範圍。 :-) – EmptyStack

0
AsynchronousImageView *image = [[AsynchronousImageview alloc]init]; 
    [image loadImagewithUrlString:getString]; 

    FbGraphResponse *fb_graph_response = [fbGraph doGraphGet:get_string withGetVars:nil]; 

    UIImageView *image_view = [[UIImageView alloc] initWithImage:fb_graph_response.imageResponse]; 


    cell.imageView.image = image_view.image; 

此代碼創建說明問題.....試試這個計算策略......一旦任何圖像文件目錄下載其保存到任何臨時文件夾中(請烏爾圖像的名稱,以便您可以識別他們每個人唯一)的....當你有配置電池只取圖像格式塔臨時文件夾中的每個方法celForRowAtIndexPath被調用的時候....不使用

UIImageView *image_view = [[UIImageView alloc]; 

這不作任何這裏SENCE因爲你沒有使用它(你只是使用它的.image屬性)....如果可能的話,還收集你在viewDidLoad中的所有數據你可以進一步提高性能

0

你確定它是導致問題的異步圖像嗎?評論異步圖像部分,看看也許它是FbGraphResponse部分的真正原因。

我看到您每次都爲圖形響應創建圖像,這可能會導致速度變慢。

+0

沒有異步圖像不會導致prob ..事實上,因爲每次創建圖像它減慢tableview滾動,所以我想使用異步。圖像示例。我沒有得到如何使用這個,這是我問這裏的問題,但它與西蒙的建議正常工作 – iProgrammer