繁体   English   中英

使用动画重新加载表格视图单元格(Swift)

[英]Reload Table view cell with animation (Swift)

有没有办法重新加载具有动画的多个部分的特定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具有动画效果。 如果是这样的话,你应该考虑使用beginUpdates()和endUpdates()用于UITableViews甚至是NSFetchedResultsController所以它处理所有的更新动画干净。

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

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

在Swift 3.0中

我们可以在tableview中重新加载特定部分的特定行

let indexPath = IndexPath(item: 2, section: 0)
self.tableView.reloadRows(at: [indexPath], with: .automatic)

如果你想在swift 3.0中重新加载单个部分,你可以这样做:

tableView.reloadSections(IndexSet(integer: 0), with: .automatic)

官方文档中的define IndexSet

管理一Set整数值,这些值通常用作Cocoa API中的索引类型。 有效整数值的范围是(0,INT_MAX-1)。 超出此范围的任何内容都是错误的。

所以IndexSet是关于索引设置的,只是在[]中放入一些Int值

// for reload one section
tableView.reloadSections([section], with: .automatic)
// or using like this
tableView.reloadSections(IndexSet(integer: section), with: .automatic)

// for reload multi sections
tableView.reloadSections([1, 2, 3, section], with: .automatic)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM