2013-10-07 60 views
0

與tableViewCell凍結有一些問題。我有一個表格視圖單元格和一系列練習。當我在另一個viewController上添加一個新的練習時,然後回到列出所有練習的tableViewController,相應的單元格被凍結(請參見截圖)。然後,如果我撥打[self.tableCell reloadData],該單元格不會刷新。UITableViewCell被凍結(不會用新數據重新渲染)。怎麼修?

這很奇怪,因爲如果有問題的單元格是索引號4,並且我將數據源更改爲只有2個項目,則第4個單元格仍然是凍結的。 (第一2正確渲染,第三是空白的,第四被冒犯小區)的所有練習

列表:

https://dl.dropbox.com/u/2795448/Screenshots/ot.png

當我更改的tableView數據源中的數據,即細胞仍然是凍結:

https://dl.dropbox.com/u/2795448/Screenshots/ou.png

如果我把一個斷點,並檢查的tableView,它並沒有說有關冷凍細胞東西:

https://dl.dropbox.com/u/2795448/Screenshots/ov.png

不知道從哪裏何去何從:(看來當我插入一行從不同的viewController然後彈出回到這一個只發生。

有什麼想法?謝謝所以很多任何幫助!

+0

也可以發佈任何/所有我的代碼,如果有幫助。 – hurshagrawal

+1

郵政編碼它會讓事情變得更快。 –

回答

1

您保留對單元格的引用。這是一個壞主意。它與表格單元的數據源和回收的整體模式相矛盾。各種古怪的錯誤將是必然結果。

相反,您應該確保您的數據源方法返回正確數量的部分和行以及相應的單元格,然後重新加載您的表格而非單元格。

[self.tableView reloadData]; 

因此,例如,當畫面從加入新的項目回來,請確保您使用的數據陣列進行更新並重新加載。

1

我完全不明白你的方式來管理tableview與數據源。如果您對數據源進行任何更改,則同樣的更改也應反映在tableview中。 (兩者應該同步)。您可以使用:

Table reloadRowsAtIndexPaths: Table deleteRowsAtIndexPaths: Table insertRowsAtIndexPaths:

來修改你的tableview和它的細胞。或者你可以撥打[Table reloadData]

記住:從來沒有嘗試存儲的UITableViewCells引用,因爲它們在屏幕上再次離隊 - 參考將只是一個垃圾桶。只要使用上述3種方法改變你的細胞,你就很好。如果你想清除一些東西,就問問它。