我有一个UITableView
列出了api中的数据。
当前,这些响应以50个项目为一组。
为了支持“无限滚动”,我目前正在执行类似的操作
func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
if indexPath.row == items.count - 1 && !isPaginating {
requestNextPage()
}
}
requestNextPage
完成后,我在视图模型上更新了数组,然后调用
func reloadTableView() -> Void {
DispatchQueue.main.async {
self.activity.stopAnimating()
self.tableView?.reloadData()
}
}
实质上是重新加载表,呈现requestNextPage
添加到我的数组中的新行。
我不喜欢这种方法,因为它会导致整个表被重新加载,并且感觉有点......笨拙。
我本以为用insertRowsAtIndexPaths
这样做可能会更好,但是我不确定如何实现这一目标。
我尝试过类似的
var indexPaths = [IndexPath]()
for i in self.items.count...self.items.count + feed.count {
indexPaths.append(IndexPath(row: i, section: 0))
}
self.insertNewRows?(indexPaths)
我希望采用现有的行数items.count
并添加新行feed.count
,然后让我调用insertNewRows
,这实际上在我看来触发了这一点
func insertRows(_ indexPaths: [IndexPath]) {
tableView?.beginUpdates()
tableView?.insertRows(at: indexPaths, with: .fade)
tableView?.endUpdates()
}
是否可以在此庄园中创建无限滚动效果?我当前的方法会触发异常
由于未捕获的异常而终止应用程序 “ NSInternalInconsistencyException”,原因:“试图插入第50行 进入第0部分,但在第0部分之后只有50行 更新”
我使用的是Swift,因此难以遵循Objective C的答案,我宁愿不安装第三方库来处理此问题。
“重复”问题还建议使用7年未更新的库。