2016-01-17 93 views
0

我遇到線程從服務器獲取新模型的情況,並且嘗試重新加載我的UICollectionViewController中的所有單元。UICollectionView和UITableView重新加載會導致重新排列單元格

我打電話collectionView.reloadData()(在主線程),突然所有的細胞正在改變他們的立場

無下列作品(意思是,我可以從一個小區到另一個看到的細胞改變其位置的內容) :

  1. 排序數據源,以相同的順序
  2. 保存在自定義詞典中的細胞,並重新匹配所述數據到細胞
  3. self.collectionView!.reloadItemsAtIndexPaths(indexPaths)其中indexPaths包含所有CURR耳鼻喉科路徑
  4. 重裝只visiable細胞self.collectionView!.visibleCells()

缺少什麼我在這裏?

+2

「我嘗試了一切可能的」。你嘗試了什麼?你的代碼在哪裏?我們怎麼可能幫你?我們應該猜測你寫的是什麼? – jcaron

+0

@jcaron - 如果你可以扼殺我,並重新打開這個問題 - 我會提供一個完整和詳細的答案,包括我所有的發現,解決方案和一個例子 –

回答

1

如果服務器返回了正確的有序數據,恐怕你沒有清理單元格中的數據。當你沒有加載圖像數據或沒有圖像時,你應該將imageView.image設置爲零在數據中。 如果您在UITableViewDataSource定製你的,你應該做這樣的事情:

if(data.image != nil) { 
    imageView.image = data.image; 
} else { 
    imageView.image = nil; 
} 

如果您在自定義表格視圖單元格級這樣做,這樣做:

-(void)prepareForReuse { 
    imageView.image = nil 
} 
+0

我在這裏有一點點丟失 - 我有圖像,標籤和背景顏色爲每個細胞。我應該何時刪除它們? –

+0

@YoavR。更新了我的答案。 – Lumialxk

相關問題