UITableView重新加载行SatinExpaths隐藏行

UITableView重新加载行SatinExpaths隐藏行,uitableview,ios5,Uitableview,Ios5,我将UITableView与静态单元格一起使用。 如果使用重新加载数据,则一切正常 如果我尝试reloadRowsAtIndexPaths它会隐藏行。如果我上下拖动tableView(当单元格更新时),则会出现行。我也有同样的问题,这似乎是一个错误。我做了一些实验,当我将动画选项设置为UITableViewRowAnimationNone时,问题没有出现。当您将该选项设置为UITableViewRowAnimationTop时,还会发生一些其他有趣的事情。如果您的表格单元格是静态的(即,您正在使

我将UITableView与静态单元格一起使用。 如果使用
重新加载数据
,则一切正常


如果我尝试
reloadRowsAtIndexPaths
它会隐藏行。如果我上下拖动tableView(当单元格更新时),则会出现行。

我也有同样的问题,这似乎是一个错误。我做了一些实验,当我将动画选项设置为
UITableViewRowAnimationNone
时,问题没有出现。当您将该选项设置为
UITableViewRowAnimationTop
时,还会发生一些其他有趣的事情。

如果您的表格单元格是静态的(即,您正在使用同一个单元格对象替换当前显示的单元格对象),则您看到的是过渡动画的工件

这样想吧。假设您设置了UITableViewAnimationOptionFade。当要替换单元时,要替换的单元(在本例中是完全相同的对象)会添加淡入动画。然后,被替换的单元(同样,它是同一个对象)添加了淡出动画。最后,单元实际上在那里,但它是不可见的,因为淡出动画使该单元对象不可见


在非静态表视图中,替换单元格与要替换的单元格是不同的对象,这不是问题,因为动画添加到两个不同的对象。

我通过删除动画解决了这个问题

tableView.reloadRows(at: [yourIndexPath], with: UITableView.RowAnimation.none)

希望这对任何搜索此内容的人都有帮助。

我不知道框架/推荐模式如何确保单元格实际上是不同的。
dequeueReusableCellWithIdentifier
是否有可能返回与被隐藏单元相同的可重用单元?在我看来,苹果应该解决这个问题。没有理由不支持这两种方案,只需简单地检查一下新单元格是否=旧单元格。我没有找到这种方法。我想是雷达吧,解释得很好。那么解决方案是什么呢?@Josh不使用静态单元格,总是将它们出列。@leftspin在我的例子中,我为设置配置UI实现了一个ListView,所以每一行都完全不同。这就是我使用静态单元格的原因。仍然没有固定。非常感谢。