SwiftUI 实战之List分页与无限滚动之基础版(2020教程)

尽管我们可以访问List中的具体item,但是我们不知道List滚动到了当前哪个位置,也不知道我们到List末尾的距离。这些数据都是我们进行分页的基础。

Pagination(分页)对于每个人都有不同的含义,因此我们先给分页的目标做个明确定义:

在滚动过程中,List应提取并追加下一页的数据。当用户到达列表末尾且请求仍在进行中时,应显示加载视图。

基于上面的定义,让我们实现一个解决方案来解决这些问题,给List增加分页功能

实现

在此节中,我们将介绍两种不同的方案。第一种将更为简单,第二种将更为高级用户喜欢。

第一种方法

最简单的方法就是监测当前item是否是最后一个。如果是,我们则触发一个异步请求去提取下一页的数据。

RandomAccessCollection+isLastItem

由于List支持RandomAccessCollection,我们可以创建一个extension并实现isLastItem 函数。Self关键词是必须的,它将限制extension的元素必须实现Identifable。

好了,上面这段文字没有深入研究过swift的朋友肯定要懵圈了。大家可以参考我之前文章,简单了解一下RandomAccessCollection 和Identifiable

  • SwiftUI RandomAccessCollection 是什么如何用(2020)
  • SwiftUI 基础之06 Identifiable 有什么用
  • SwiftUI guard 是什么如何用(2020教程)

下面是代码

你可能感兴趣的:(SwiftUI 实战之List分页与无限滚动之基础版(2020教程))