PagedLists

CI Status Version License Platform Carthage SPM Swift Version

它是什么?

PagedLists 为您提供自定义的 UITableViewUICollectionView 类,以支持分页功能。加载状态、当前页和何时实际请求下一页的所有逻辑和跟踪都由这些组件处理。

特性

安装

1. Cocoapods

PagedLists 可通过 CocoaPods 获取。要安装它,只需将以下行添加到您的 Podfile

pod 'PagedLists', '~> 1.0.0'

2. Carthage

Carthage 是一个去中心化的依赖管理器,用于构建您的依赖项并为您提供二进制框架。将以下行添加到您的 Cartfile 并按照安装说明进行操作。

github "rootstrap/PagedLists" ~> 1.0.0

3. Swift Package Manager

这样就可以了。 PagedLists 应该作为依赖项出现在导航面板中,并且该框架将自动链接到您的目标。

注意: 始终建议将您的外部库锁定到特定版本。

用法

您可以通过编程方式或通过 Storyboards 添加 PagedTableViewPagedCollectionView,方法是在属性检查器中指定类。

let tableView = PagedTableView(frame: <some CGRect>)

配置

设置您期望从数据源获取的每页元素数量。

tableView.elementsPerPage = 20

分页委托

tableView.updateDelegate = self

通过遵循分页协议,PagedTableViewPagedCollectionView 使您有机会从您所需的来源加载数据。然后,您必须返回元素计数或在发生故障时返回错误。

extension ViewController: PagedTableViewDelegate {

  func tableView(
    _ tableView: PagedTableView,
    needsDataForPage page: Int,
    completion: (Int, NSError?) -> Void
  ) {
    // Load data from a network request and communicate results
    // back to the PagedTableView
    viewModel.getItems(
      page: page,
      success: { [weak self] newItemsCount in
        tableView.reloadData()
        completion(newItemsCount, nil)
      },
      failure: { [weak self] error in
        self?.showErrorToTheUser()
        completion(0, error)
      }
    )
  }
}
自定义分页数据

在上面的示例中,我们让 PagedTableView 根据加载的元素数量自动检测是否需要新的页面请求。

如果您的数据源提供有关分页的数据,您可以使用该信息来控制表格视图何时加载新页面。

tableView.hasMore = requestData.isNextPageAvailable

重启分页

您可以重置表格或集合视图上的所有分页数据,例如,如果您有下拉刷新控件。

dataSource.items = []
tableView.reloadData()
// Resets pagination
tableView.reset()

示例

要运行示例项目,请克隆仓库,并首先从 Example 目录运行 pod install

鸣谢

PagedListsRootstrapGerman López 维护,并由我们的贡献者提供帮助。

许可证

PagedLists 在 MIT 许可证下可用。有关更多信息,请参阅 LICENSE 文件。