2012-07-30 82 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