Wil*_*son 15 row tableview reloaddata ios swift
有没有办法重新加载UITableView
具有动画的多个部分的特定单元格?
我一直在用:
self.TheTableView.reloadSections(NSIndexSet(index: 1), withRowAnimation: UITableViewRowAnimation.Right)
Run Code Online (Sandbox Code Playgroud)
这会激活该部分中的所有单元格.另一种选择是使用:
self.TheTableView.reloadRowsAtIndexPaths(<#indexPaths: [AnyObject]#>,
withRowAnimation: <#UITableViewRowAnimation#>)
Run Code Online (Sandbox Code Playgroud)
编辑:
使用reloadRowsAtIndexPaths之后
由于未捕获的异常'NSInternalInconsistencyException'而终止应用程序,原因:'无效更新:第1节中的无效行数.更新后的现有部分中包含的行数(5)必须等于该行中包含的行数在更新(4)之前的部分,加上或减去从该部分插入或删除的行数(0插入,0删除)和加或减移入或移出该部分的行数(0移入,0移动出)."
试图通过将对象附加到数组中来找到重新加载tableview的平滑方法.
在reloadRowsAtIndexPaths工作之前调用TheTableView.reloadData(),但动画很糟糕.还有另一种方法吗?
Mar*_*kle 12
为什么不直接重新加载细胞?indexPath包含节和行,因此只需跟踪要重新加载的节,并填充该数组中的索引.
var indexPath1 = NSIndexPath(forRow: 1, inSection: 1)
var indexPath2 = NSIndexPath(forRow: 1, inSection: 2)
self.tableView.reloadRowsAtIndexPaths([indexPath1, indexPath2], withRowAnimation: UITableViewRowAnimation.Automatic)
Run Code Online (Sandbox Code Playgroud)
根据您的评论,您希望更改阵列并在更改中使tableView具有动画效果.如果是这样的话,你应该考虑使用beginUpdates()和endUpdates()用于UITableViews甚至是NSFetchedResultsController所以它处理所有的更新动画干净.
self.tableView.beginUpdates()
// Insert or delete rows
self.tableView.endUpdates()
Run Code Online (Sandbox Code Playgroud)
如果您使用Core Data,我建议使用NSFetchedResultsController,因为它简化了整个过程.否则,您必须自己处理更改.换句话说,如果您的阵列发生更改,则需要使用beginUpdates()和endUpdates()在tableview中手动删除或插入行.如果您没有使用核心数据,请研究这一点以掌握它是如何处理的.
在 Swift 3.0 中
我们可以在 tableview 中重新加载特定部分的特定行
let indexPath = IndexPath(item: 2, section: 0)
self.tableView.reloadRows(at: [indexPath], with: .automatic)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
26947 次 |
最近记录: |