2017-03-01 60 views
0

我有一個tableview的問題。tableview更新錯誤的索引路徑的單元格

我有一個音軌的列表,我檢查每個音軌,如果這個音軌實際存在。如果不是,我在單元格圖像視圖中的圖片上設置了一個已刪除的圖像。

//SET DELETED IMAGE IF TRACK NOT EXISTS 
    if (!trackExists && cell.trackImageView.subviews.count < 1) { 

     UIImageView *deletedImageView = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 60, 60)]; 
     deletedImageView.image = [self resizeImageWithImage:[UIImage imageNamed:@"cellDeletedImage"] scaledToSize:CGSizeMake(60, 60)]; 
     [cell.trackImageView addSubview:deletedImageView]; 

    } 

有時當我重新加載tableview時,刪除的圖像是在現有的軌道上。我知道有更有效的方式來做到這一點,但我嘗試過,我最終在這裏。

此外,我還記錄了這種方法,即使沒有日誌,它也會刪除已刪除的圖像。

回答

0

很可能,如果您在設計時使用表格視圖,那麼您正在重複使用單元格。當您上下滾動表格幾次時會發生這種情況嗎?如果您再次滾動,是否有一個已刪除圖像的單元格突然沒有它?

這聽起來像重用的單元格仍然有一個對該刪除圖像的引用。

這不是很清楚,你添加該圖像的觀點,但我建議你移動代碼到自定義類的表格視圖單元格(或創建一個,如果不存在的話)。隨後在prepareForReuse中,確保圖像視圖已被刪除或隱藏。

@class TrackTableViewCell : UITableViewCell 
{ 
    - (void) prepareForReuse 
    { 
     //Remove/hide image view 
    } 

    - (void) setAsDeleted 
    { 
     //Add/show image view 
    } 
} 

(請原諒Objective-C的語法錯誤!我一直在使用雨燕有一段時間了。)