我有一個計時器,它調用下面的代碼來重新加載我的分組的UITableView的第二節中的單元格。它工作得很好,除非我向上滾動屏幕以使第一部分/單元格不可見。一旦它「回彈」到正確的位置,我就會發現應該出現在第0節的文本出現在第1節中,反之亦然。UITableView reloadRowsAtIndexPaths和cellForRowAtIndexPath
[self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:[NSIndexPath indexPathForRow:0 inSection:1]] withRowAnimation:UITableViewRowAnimationNone];
是否reloadRowsAtIndexPaths或cellForRowAtIndex路徑工作從全(可見或不可見)的細胞的頂部,或者它只是在開始是在屏幕上可見的細胞起作用?換句話說,第0部分是否實際改變,取決於它是否可以在屏幕上顯示?
還有什麼會導致cellForRowAtIndexPath將錯誤的數據加載到單元格中?
正如你所知道的那樣,細胞被回收利用,當你使用回收細胞時,它的內容設置較舊。也許這是你的問題,一定要重置所有的單元格內容,以避免顯示另一個單元格的內容。 – Raspu
@Raspu:你會如何做到這一點? – SparkyNZ
每次必須顯示單元格時,表格視圖會從其委託中調用方法'tableView:cellForRowAtIndexPath:'。在這個方法中,你必須返回一個單元格,爲了避免重載,你使用'dequeueReusableCellWithIdentifier:'來重用一個目前沒有顯示的單元格。確保您始終更改該單元格的標籤文本(如果您使用的是標準單元格,即'cell.textLabel.text')。 – Raspu