gpt4 book ai didi

ios - 重新加载带有动画的表格 View 单元格(Swift)

转载 作者:IT王子 更新时间:2023-10-29 05:21:09 25 4
gpt4 key购买 nike

有没有办法重新加载具有多个动画部分的特定 UITableView 单元格?

我一直在使用:

self.TheTableView.reloadSections(NSIndexSet(index: 1), withRowAnimation: UITableViewRowAnimation.Right)

虽然这会为该部分中的所有单元格设置动画。另一种选择是使用:

self.TheTableView.reloadRowsAtIndexPaths(<#indexPaths: [AnyObject]#>, 
withRowAnimation: <#UITableViewRowAnimation#>)

编辑:

使用 reloadRowsAtIndexPaths 之后

由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“无效更新:部分 1 中的行数无效。更新 (5) 后现有部分中包含的行数必须等于行数在更新 (4) 之前包含在该部分中,加上或减去从该部分插入或删除的行数(0 插入,0 删除)以及加上或减去移入或移出该部分的行数(0 移入, 0 移出)。'

试图找到一种通过将对象附加到数组中来重新加载 tableview 的平滑方法。

在 reloadRowsAtIndexPaths 起作用之前调用 TheTableView.reloadData(),但动画有问题。还有其他方法吗?

最佳答案

为什么不直接重新加载单元格呢? indexPath 包含部分和行,因此只需跟踪您要重新加载的部分并填充该数组中的索引。

var indexPath1 = NSIndexPath(forRow: 1, inSection: 1)
var indexPath2 = NSIndexPath(forRow: 1, inSection: 2)
self.tableView.reloadRowsAtIndexPaths([indexPath1, indexPath2], withRowAnimation: UITableViewRowAnimation.Automatic)

根据您的评论,您希望更改数组并让 tableView 在更改中设置动画。如果是这种情况,您应该考虑对 UITableView 甚至 NSFetchedResultsController 使用 beginUpdates() 和 endUpdates()因此它可以干净地处理所有更新动画。

self.tableView.beginUpdates()
// Insert or delete rows
self.tableView.endUpdates()

我建议使用 NSFetchedResultsController如果您使用核心数据,因为它简化了整个过程。否则,您必须自己处理更改。换句话说,如果您的数组发生变化,您需要使用 beginUpdates() 和 endUpdates() 手动删除或插入 TableView 中的行。如果您不使用 Core Data,请研究 this掌握它是如何处理的。

关于ios - 重新加载带有动画的表格 View 单元格(Swift),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29632472/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com