我有什麼可能看起來像一個非常奇怪的問題(它確實給我!)UITableViewCell在仍然在屏幕上時被重用?
我使用的是UITableView
顯示均含有一UIWebView
細胞。我意識到這是一個壞主意,但我不能以其他方式真正做到這一點。
我緩存每個單元的高度時UIWebView
完成加載,然後調用:
[self.tableView beginUpdates];
[self.tableView reloadRowsAtIndexPaths:@[cellIndexPath]
withRowAnimation:UITableViewRowAnimationNone];
[self.tableView endUpdates];
所有鍺代碼是in a Gist here。
我還將UIWebView
s緩存在數據源的字典中,因此可以在單元重新加載時重用它。
這似乎是一種工作,但我遇到了很多問題,由此單元格的內容將隨機消失。我已經添加了一些日誌記錄來確定發生了什麼,並且按照什麼順序,並且好像有些單元格正在被重用,同時它們仍然在屏幕上。
我在日誌中看到這一點的同時向下滾動:在這種情況下
2014-02-11 13:45:49.091 EApp[45936:70b] Generating cell for 1: Panning
2014-02-11 13:45:49.245 EApp[45936:70b] Generating cell for 2: Calibration
2014-02-11 13:45:50.063 EApp[45936:70b] Generating cell for 3: Aperture Priority
2014-02-11 13:45:50.063 EApp[45936:70b] Reusing cell: Stopping down
「停止下降」是仍在屏幕上的一個細胞。 「生成單元格」項記錄在數據源的cellForRowAtIndexPath
內部以及單元格「prepareForReuse
」內的「重用」消息內。
有誰知道這裏會發生什麼?我知道這看起來很複雜。
「我遇到了很多的問題,從而使細胞的內容會隨機消失。」那是真正的問題。大多數時候,罪魁禍首都在你的'table:cellForRowAtIndexPath:'中 - 看到它的代碼將極大地簡化找出錯誤。 – dasblinkenlight
你爲什麼要重新加載一些單元格? (爲了什麼目的?) – AncAinu
這聽起來像是你添加一個子視圖(可能是你的UIWebView)到一個不同的單元格,它將它從它開始的單元格中移除。 – Holly