如何实现TableView.insertRows

Mar*_*oon 3 uitableview swift3

我正在myTableview为该博客帖子添加分页.数据源是一组帖子,即posts = [post].

我最初拿了20个帖子.我有一个按钮,可以获取接下来的20条记录.所有这一切都很好.我无法想象如何在不调用的情况下在表中插入这些新记录reloadData().有人可以解释下面的代码吗?我不明白indexPaths下面第2和第3行发生了什么.上:

IndexPath(row:(self.posts.count - 1)
Run Code Online (Sandbox Code Playgroud)

我是否通过原始数据集的最后一行或更新的数据集?

TableView.beginUpdates()
let indexPath:IndexPath = IndexPath(row:(self.posts.count - 1), section:0)
TableView.insertRows(at: [indexPath], with: .left)
TableView.endUpdates()
Run Code Online (Sandbox Code Playgroud)

Rob*_*Rob 9

如果要将项添加到tableview,则传递给的值insertRows将是模型对象中新行的索引路径数组:

let additionalPosts = ...
posts += additionalPosts

let indexPaths = (posts.count - additionalPosts.count ..< posts.count)
    .map { IndexPath(row: $0, section: 0) }

tableView.insertRows(at: indexPaths, with: .left)
Run Code Online (Sandbox Code Playgroud)

所以,如果您的数组中有20个项目,并且您添加了另外20个帖子,那么indexPaths将是:

[[0,20],[0,21],[0,22],[0,23],[0,24],[0,25],[0,26],[0,27],[ 0,28],[0,29],[0,30],[0,31],[0,32],[0,33],[0,34],[0,35],[0, 36],[0,37],[0,38],[0,39]]