为 UITableView 插入带有动画的行(并更新所有其他单元格)

Posted

技术标签:

【中文标题】为 UITableView 插入带有动画的行(并更新所有其他单元格)【英文标题】:Insert rows for UITableView with animation (and update all other cells) 【发布时间】:2016-11-16 17:54:49 【问题描述】:

在我的表格视图中,我的单元格的背景颜色设置取决于它是奇数还是偶数。

我想插入带有动画 .top 的新单元格,让它们从 tableview 的顶部向下动画。

但是,这样做时,它们与单元格的背景颜色存在差异。我知道在使用tableView.insertRows 时,它只为插入的行调用cellForRow。让已经存在的单元格的背景颜色错误。

我尝试调用: tableView.beginUpdates() tableView.insertRows() tableView.endUpdates()

真的不知道如何解决这个问题。任何帮助表示赞赏。

【问题讨论】:

你需要像这样重新加载你的表tableView.reloadData() @Rajat 你不明白我的问题。我不想重新加载,因为我想要动画。 尝试在func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath)中添加您的自定义动画 @ConstantinSaulenco 嗯你有什么例子吗? 【参考方案1】:

我将在插入前检查第一个单元格的状态并根据该单元格排列背景。

【讨论】:

【参考方案2】:

您可以在所有可见的索引路径上使用 reloadRows(at:with:)。您可以通过调用indexPathsForVisibleRows 来获取可见的索引路径。这将强制动画。

func reloadVisibleCells() 
    tableView.reloadRows(at: tableView.indexPathsForVisibleRows, with: .automatic)
 

【讨论】:

以上是关于为 UITableView 插入带有动画的行(并更新所有其他单元格)的主要内容,如果未能解决你的问题,请参考以下文章

UITableView - 删除带有动画的行

删除带有动画的表格行

获取将在 UITableView 中插入的行的索引

删除和插入具有不同高度的单元格时,UITableView 动画故障

带有 2 个动画的 insertRowsAtIndexPaths

将行插入 UITableView 的顶部会导致行向下移动,从而导致动画效果不佳