2014-12-25 126 views
0

我有tableview,我想從目錄中的一個文件夾中顯示所有圖像,並且我有該目錄的路徑。我加載圖像喜歡手機:滾動後的單元格在圖像上顯示圖像

- (void)configureCell:(UITableViewCell *)cell atIndexPath:(NSIndexPath *)indexPath { 

    for (UIView * view in cell.contentView.subviews){ 
     if ([view isKindOfClass:[UIButton class]]) { 
      [view removeFromSuperview]; 
     } 
    } 

    cell.imageView.image = nil; 
    cell.accessoryType = UITableViewCellAccessoryNone; 

    NSData *imgData = [NSData dataWithContentsOfFile:absoluteImagePath]; 
    UIImage *thumbNail = [[UIImage alloc] initWithData:imgData]; 
    UIImageView *imageView = [[UIImageView alloc] initWithImage:thumbNail];    
    [cell insertSubview:imageView atIndex:0]; 
} 

但是當我向上和向下滾動,我得到的圖像在內部細胞圖像(舊圖像低於新可見,當我例如第一個位置滾動我看到索引圖像0下方其他圖像)。 有誰知道什麼是問題,我是這個iOS編程的新手?

回答

1

你應該

  • 子你的,
  • 創建圖像的出口,以及
  • 設計在故事板的佈局。

好處:

  • 無需檢查(cell==nil)
  • 你必須寫更少的代碼沒有冗餘視圖創建錯誤
  • 清潔液
+1

或者,您可以使用'UITableViewCell'的'imageView'屬性。 –

+1

@RinatKhanov是的,但是OP對圖像視圖的外觀和定位的控制會少一些(大概是不夠的)。 – Mundi

0

在初始化單元的位置聲明UIImageView。 例如

if (cell==nil) 
{ 
UIImageView *image = [[UIImageView alloc]initWithFrame:yourFrame]; 
[cell addSubView:image]; 
} 
image.image = yourImage; 

或者,您可以添加新的UIImageView作爲子視圖之前從小區的所有子視圖。

+0

如果電池是零添加子視圖圖像視圖?無對象? –

+0

是的,只需嘗試一下就行。或者你也可以像mundi所說的那樣子類化UITableViewCell。 –

1

當細胞被重新使用,[cell insertSubview:imageView atIndex:0];增加了一個額外的UIImageView的細胞。建議是創建一個自定義UITableViewCellprepareForReuse方法,刪除UIImageView。識別要刪除的UIImageView的簡單方法是向其添加tag。例如,

imageView.tag = 1000;

然後你就可以找到

UIImageView *imageView = [self.contentView viewWithTag:1000]; 
if (imageView) { 
    [imageView removeFromSuperview]; 
} 
相關問題