2012-07-30 92 views
6

我使用靜態單元格的UITableView。 如果我用reloadData,比一切都好。UITableView reloadRowsAtIndexPaths隱藏行

如果我嘗試reloadRowsAtIndexPaths它隱藏行。如果我將tableView上下拖動(當單元格更新時),則會出現行。

回答

8

我有同樣的問題,它似乎是一個錯誤。我嘗試了一些,當我將動畫選項設置爲UITableViewRowAnimationNone時,問題不會發生。當您將該選項設置爲UITableViewRowAnimationTop時,也會發生其他一些有趣的事情。

+0

和....你在哪裏設置? – Josh 2015-06-22 08:51:15

+3

仍然沒有修復。謝謝。 – Maik639 2016-04-23 00:41:56

10

如果您的表格單元格是靜態的(即,您正在使用相同的單元格對象替換當前顯示的單元格對象),則您看到的是過渡動畫的人工產物。

想想這樣。假設你設置了UITableViewAnimationOptionFade。當單元格被替換時,要替換的單元格(在這種情況下是完全相同的對象)添加了淡入動畫。然後,正在替換的單元格(又是全部相同的對象)添加了淡出動畫。最後,單元格實際上是在那裏,但它是隱形的,因爲淡出動畫已使該單元格對象不可見。

在非靜態tableview中,替換單元是與要替換的單元不同的對象,因爲動畫添加到兩個不同的對象,所以這不是問題。

+0

我不知道框架/推薦模式如何確保單元格實際上會有所不同。是否沒有'dequeueReusableCellWithIdentifier'返回與隱藏的單元相同的可重用單元的可能性?在我看來,蘋果應該修復這個錯誤。沒有理由不能通過簡單的檢查來支持這兩種情況,以查看新的單元格==舊的單元格。 – devios1 2014-09-03 17:56:12

+0

我找不到方法。我想要一個雷達。 – leftspin 2014-09-11 18:29:38

+0

很好的解釋。那麼解決方案會是什麼? – Josh 2015-06-22 08:25:30