ios – 重新加载具有动画(Swift)的表视图单元格

ios – 重新加载具有动画(Swift)的表视图单元格,第1张

概述有没有办法重新加载具有动画的多个部分的特定UITableView单元格? 我一直在使用: self.TheTableView.reloadSections(NSIndexSet(index: 1), withRowAnimation: UITableViewRowAnimation.Right) 这样动画化该部分中的所有单元格.另一个选择是使用: self.TheTableView.reloadR 有没有办法重新加载具有动画的多个部分的特定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移动出).”

尝试通过将对象附加到数组中来找到重新加载表视图的平滑方式.

在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具有动画效果.如果是这种情况,您应该考虑对UItableVIEws使用beginUpdates()和endUpdates(),甚至使用NSFetchedResultsController,从而彻底处理所有的更新动画.

self.tableVIEw.beginUpdates()// Insert or delete rowsself.tableVIEw.endUpdates()

如果您使用Core Data来简化整个过程,我建议使用NSFetchedResultsController.否则你必须自己处理更改.换句话说,如果您的数组更改,则需要使用beginUpdates()和endUpdates()手动删除或插入表中的行.
如果您没有使用核心数据,请学习this来掌握如何处理.

总结

以上是内存溢出为你收集整理的ios – 重新加载具有动画(Swift)的表视图单元格全部内容,希望文章能够帮你解决ios – 重新加载具有动画(Swift)的表视图单元格所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1110349.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-29
下一篇2022-05-29

发表评论

登录后才能评论

评论列表(0条)

    保存