[英]Infinite UITableView Scroll with NSFetchedResultsController
我正在尝试使用此方法来实现无限滚动的UITableView
该解决方案的核心逻辑是:
这意味着单个单元格的插入或删除实际上会导致三个插入或删除。 由于我表的数据源是由NSFetchedResultsController
填充的,因此会导致断言失败。
更新(12)之后在现有节中包含的行数必须等于更新(15)之前在该节中包含的行数,加上或减去从该节插入或删除的行数(已插入0) ,删除1个),然后加上或减去移入或移出该部分的行数(移入0,移出0)。
在这种情况下,有什么方法可以阻止程序崩溃? 我真的很感谢任何帮助/指针。 谢谢。
在iOS中,这可能会有些棘手,尤其是在您刚入门时。 关键是在通知更改之前,更新支持UITableView
的数据源。
例如,如果您有一个支持表视图的NSArray
,则在对表reloadSection:
调用reloadSection:
之前,您需要删除或添加项目。
尽管它是最不优化的解决方案,但是您的测试可以随意调用reloadData
,它会忽略表视图已缓存的内容,并根据支持表视图的内容强制其重新计算。
您可以使用NSFetchedResultsControllerDelegate
方法controller:didChangeObject:atIndexPath:forChangeType:newIndexPath:
插入\\删除3个对象。
为简单起见,您可以在表视图中返回3
的节数(这将处理获取3个对象的副本)。 然后在NSFetchedResultsControllerDelegate
更新UITableView
所有部分中的对象(插入,删除或移动)。 您应该使用NSFetchedResultsControllerDelegate
行号,并对不同部分分别应用所有更改3次。 请记住要使其与UITableView
数据源方法tableView:numberOfRowsInSection:
保持一致。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.