2013-02-22 75 views
0

這應該是顯示在我的任何給定的錶行中的佔位符,除非存在該索引路徑的圖像。當我向下滾動時,來自之前indexPath的圖像將加載默認值而不是釋放。我知道之前有人幫助我解決了同樣的問題,但這是在我意識到緩存圖像的重要性之前。在我的customCell方法中,我將UIImage屬性設置爲強壯,並釋放viewDidUnload的圖像。NSCache,映像發佈,異步隊列

NSString *imagename = [_imageCache objectForKey:indexPath]; 
UIImage *preview = [_imageCache objectForKey:imagename]; 

if (preview) 
{ 
    [[cell myImageView] setImage:preview]; 
} 
else 
{ 
    [[cell myImageView] setImage:[UIImage imageNamed:@"CellLogo.png"]]; 

      dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0ul); 
      dispatch_async(queue, ^{ 

      // __block UIImage *preview = nil;    
       UIImage *preview = [UIImage imageWithData:object.iG]; 
       //    } 
     if (preview) 
     { 
       dispatch_async(dispatch_get_main_queue(), ^{ 

       // if (cell) 
        [[cell myImageView] setImage:preview]; 

       }); 
      [_imageCache setObject:preview forKey:imagename]; 
     } 
      }); 
} 
+2

imageFileName函數在哪裏?你是否認爲這是一個系統功能?... cuzzzzz ....不是它的不是 – 2013-02-22 17:59:54

+1

看起來你已經完全改變了一個新的問題。舊的發生了什麼? – iDev 2013-02-22 18:21:17

+0

我做了一件壞事:(...一旦我發佈了這個問題,我想我會嘗試一些東西,它的工作。對不起 – Morkrom 2013-02-23 00:57:38

回答

1

如錯誤消息所述,您尚未在代碼中的任何位置聲明imageFilename:。有沒有這樣的方法在默認情況下,如果你願意,你可以在當前類定義在該名稱的方法:

- (NSString *)imageFilename:(NSIndexpath *)indexpath { 
    //code here 
} 

如果您已經使用過了別的地方,你需要導入特定類和調用此方法爲NSString *imagename = [myobject imageFilename:indexPath];其中myobject是該類的對象。

+0

上述答案只適用於以前有問題。修改爲新問題 – iDev 2013-02-22 18:21:56

+0

對不起:/我是一個恢復S/O吸血鬼... – Morkrom 2013-02-23 18:03:17

1

查找「cell reuse」。你需要在你的UITableViewCell子類中實現-prepareForReuse。它應該將圖像重置爲佔位符或空白圖像。