2017-01-09 81 views
0

我有一個collectionView的單元格需要改變它的圖像和點擊時改變邊框顏色。如何在不失去選定狀態的情況下調用cellForItemAtIndexPath?

我在UICollectionViewCell的子類中重寫了setSelected:以更改邊框顏色,並更改了cellForItemAtIndexPath中的圖像。但是我不知道如何在選擇一個單元后讓它們都工作,在這種情況下不會調用cellForItemAtIndexPath。如果我明確地呼叫reloadDatareloadCellAtIndexPath,並且我不知道是否在cellForItemAtIndexPath中選擇了單元格。

我不想移動特定代碼cellForItemAtIndexPath,因爲這顯然是我需要的代碼cellForItemAtIndexPath複製到didSelectItemAtIndexPath,我不想重複自己。

我不想添加一個屬性來保存被點擊的單元格的索引,因爲沒有必要添加這樣的參數,可以通過[collectionView indexPathsForSelectedItems]輕鬆找到。

此外,我不想添加屬性來引用我的數據模型(其中包含圖像),因爲它很奇怪。

那麼,我應該寫所有這些在cellForItemAtIndexPath?或者是否有任何方法直接調用cellForItemAtIndexPath而不清除所選狀態?

+1

這很簡單,您只需將選定狀態存儲在您的_model_中,並且您需要重新創建索引路徑的單元時,您還可以從那裏還原此類信息,旁邊的所有其他自定義您需要填充您的手機信息。 – holex

回答

0

創建單元格時,您不能只將選定圖像和未選定圖像傳遞給它,並讓單元格決定顯示哪一個圖像?然後,您不必在單元格中引用模型,並且仍然可以使用setSelected上的覆蓋來更改單元格的視覺效果。

另一種方法是給單元格一個委託屬性,讓它在需要的時候請求一個新的圖像。

相關問題