2012-05-03 79 views
5

我們都知道uitableview中的單元格可以重新分配,但是我看到了一些奇怪的結果。 我正在創建一個自定義單元格,每個單元格有4列,每列都有一個圖像 所以格式是這樣的 | img | img | img | img | 單元格返回後,我配置每個單元格,一個示例將配置圖片1的第一列,然後第二列不同的圖片ios uitableview uitableviewcell重複使用舊數據

現在只是假設我只能在tableview中一次顯示兩行:

|a0|a1|a2 |a3 | 
|b4|b5|b6 |b7 | 
------cell c not visible to user------ 
|c8|c9|c10|c11| 

作爲用戶向下滾動,列「A」(A0-A3)中,將不可見,而據我知道,細胞變得不可見對於列c

上面的例子將被重用工作正常,如果我可以完全佔用每個細胞/行,即我總共有12張照片。

,但如果我必須說,拍攝10張照片(最後一行將充滿只有2個,而另外兩個是空的,就像如下所示:

|a0|a1|a2 |a3 | 
|b4|b5|b6 |b7 | 
------row/cell 'c' not visible to user------ 
|c8|c9|empty|empty| 

然而,問題出現了,當我向上滾動到見細胞/行「C」 我有下面的圖片:

|a0|a1|a2 |a3 | 
------row/cell 'a' not visible to user------ 
|b4|b5|b6 |b7 | 
|c8|c9|a2|a3| 

通知,該行/單元C的最後兩列應該是空的,但正顯示出A2和A3,而不是

我該如何解決這個問題?我正在考慮手動執行此操作的方式,即通過檢查重複使用時是否應刪除不必要的視圖等,但可能會更復雜 是否有更系統的方法可以更輕鬆,更清潔?

有沒有一種方法可以讓返回的單元格忘記它的內容,還是我必須自己做這個?

謝謝

回答

7

我最近有一個類似的問題。在tableview單元格的子類修復它後,重寫prepareForReuse。從here得到的答案

+0

對不起,請將問題追溯到原始作者或社區:閱讀Apple的開發者文檔,網址爲https://developer.apple.com/documentation/uikit/uitableviewcell/1623223-prepareforreuse它表示不要處理prepareForReuse中的內容相關材料,而是處理cellForRowAt。 有沒有人有任何解釋爲什麼接受的答案與官方文檔衝突? –

9

你必須「自己動手」。無論何時重用UITableViewCell,它都會保留其以前的內容。如果你希望它被重置/清除,你必須手動完成。

在您的自定義UITableViewCell中,您可以覆蓋prepareForReuse並在設置新內容時重置您希望或執行的任何內容。

在你的情況下,在所有四列中設置UIImageView的image屬性爲nil應該工作。

相關問題