2014-02-15 51 views
0

我有一個表格解析XML並獲取由URL鏈接加載的圖像的值。這裏是我的代碼:使用SDWebImage框架無法獲取對圖像的引用

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

static NSString *CellIdentifier = @"Cell"; 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath]; 


    UILabel *labelText = (UILabel *)[cell viewWithTag:1000]; 
    labelText.text = [[self.listOfPlaceDetails objectAtIndex:indexPath.row] objectForKey:@"name"]; 

    if (cell == nil){ 
     cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; 
    } 

[cell.imageView setImageWithURL:[NSURL URLWithString:[[self.listOfPlaceDetails objectAtIndex:indexPath.row]objectForKey:@"imageFirst"]] placeholderImage:[UIImage imageNamed:@"dashie.png" ]completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType){ 


    }]; 

    cell.imageView.contentMode = UIViewContentModeScaleAspectFit; 

return cell; 
} 

是的,它的工作原理,但現在我需要修改我的UIImage(與類別,使其成爲合適的規模),我根本無法引用。當我試圖修改圖像在完成塊這樣的:

[cell.imageView setImageWithURL:[NSURL URLWithString:[[self.listOfPlaceDetails objectAtIndex:indexPath.row]objectForKey:@"imageFirst"]] placeholderImage:[UIImage imageNamed:@"dashie.png" ]completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType){ 

     [image resizedImageWithBounds:CGSizeMake(66, 66)]; 

    }]; 

是絕對沒有效果,甚至當我改變圖像的零,其實際上什麼也沒做,所以我的問題是:如何獲得的實例變量UIImage中的方法:

[cell.imageView setImageWithURL:[NSURL URLWithString:[[self.listOfPlaceDetails objectAtIndex:indexPath.row]objectForKey:@"imageFirst"]] placeholderImage:[UIImage imageNamed:@"dashie.png" ]completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType){ 


    }]; 

並修改它?或者我怎麼可以傳遞這個我以前創建的方法的UIImage實例變量?這個問題可能聽起來很愚蠢,但我需要建議。

任何幫助將不勝感激,謝謝!

+0

記錄錯誤,如果你有任何。 – Pawan

+0

如果您嘗試在'setImageWithURL'區塊內使用'cell.imageView'而不是'image',那麼該如何處理 – Merlevede

+0

我沒有錯誤,我剛剛在單元格中顯示了不適當的圖像(大小不正確)。 Merlevede,我不明白你的意思,對不起。 –

回答

2

假設沒有錯誤返回到完成塊,[image resizedImageWithBounds:CGSizeMake(66, 66)];將創建一個新的形象給你,但你仍然需要用它做什麼:

UIImage *resizedImage = [image resizedImageWithBounds:CGSizeMake(66, 66)]; 
cell.imageView.image = image; 

你千萬要小心,電池可能已經因此使用cell在塊可能是錯誤的重用之前的圖像已準備就緒。更好:

UIImage *resizedImage = [image resizedImageWithBounds:CGSizeMake(66, 66)]; 
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]; 
cell.imageView.image = resizedImage; 
+0

爲什麼你在cell.imageView.image中使用圖像時創建resizedImage? –

+0

@EvgeniyKleban,很好的地方,那是一個錯字,現在糾正 – Wain

+0

沒關係,現在有效,非常感謝Wain! –

0

SDWebImage有圖像下載,您可以下載圖像,改變你所需要的一切,並設置爲ImageView的

相關問題