2013-07-03 128 views
4

我來到這裏是因爲我的UICollectionView有一個很奇怪的問題。UICollectionView reloadData鬼細胞

所有屏幕 Imgur專輯我想和大家分享http://imgur.com/a/v3sox

首先,這裏是我的應用程序看起來像沒有問題:這張專輯的圖片2。

注意右上角的刷新按鈕,這是給我的問題。

當我向下滾動UICollectionView速度非常快,並且在收集視圖仍在滾動時按下「刷新」,我得到了不屬於任何人的「細胞剩飯」,只是留在屏幕上。 (例如:這張專輯的圖片1)

我不明白髮生了什麼,因爲在我的刷新方法,我有:

- (void)refreshData 
{ 
    //A bunch of code before I reset the data 
    dispatch_async(dispatch_get_main_queue(), ^{ 
     //Reset data 
     currentProjects = nil; 
     [self.projectsCollectionView reloadData]; 

     //Some other stuff concerning the little "Chargement..." view 
    }; 
} 

的細胞,然後繼續留在我的每個文件夾在屏幕上,所以如果我選擇另一個文件夾,我會得到相冊的圖片3(請注意最後4個單元格的標籤,它們混在一起,因爲之前的單元格在屏幕上應該不會顯示)

有人有什麼可能會導致這個問題的想法嗎?非常感謝您的時間

P.S:對不起,我把所有的屏幕,專輯,無法發佈超過2個鏈接,所以我只好即興

+0

如果您已解決了自己的問題,請將其作爲下面的答案發布,並將其標記爲已接受,而不是。 –

回答

0

我也曾經有過這種類似的問題。問題是我的自定義單元格一次又一次地創建子視圖。

從我的猜測,你應該改變標籤的值,而不是在出列後重新創建它。

2

剛剛也有同樣的問題。我通過修改UICollectionViewCell來解決它。

(注意:我的代碼是使用MonoTouch的c#)。

在單元格每次創建對象之前。即。

textView = new UITextField() 
{ 
    BackgroundColor = UIColor.Clear, 
    TextColor = UIColor.LightGray, 
    Text = Title 
}; 

要修復它,檢查對象,並相應地更新它。

if (textView == null) 
{ 
    textView = new UITextField() 
    { 
     BackgroundColor = UIColor.Clear, 
     TextColor = UIColor.LightGray, 
     Text = Title 
    }; 
} 
else 
    textView.Text = Title; 

現在,當在CollectionView上調用重載數據時,它會正確地重新加載。