PagedLists 为您提供自定义的 UITableView
和 UICollectionView
类,以支持分页功能。加载状态、当前页和何时实际请求下一页的所有逻辑和跟踪都由这些组件处理。
UICollectionView
中的分页滚动。PagedLists 可通过 CocoaPods 获取。要安装它,只需将以下行添加到您的 Podfile
pod 'PagedLists', '~> 1.0.0'
Carthage 是一个去中心化的依赖管理器,用于构建您的依赖项并为您提供二进制框架。将以下行添加到您的 Cartfile
并按照安装说明进行操作。
github "rootstrap/PagedLists" ~> 1.0.0
这样就可以了。 PagedLists 应该作为依赖项出现在导航面板中,并且该框架将自动链接到您的目标。
注意: 始终建议将您的外部库锁定到特定版本。
您可以通过编程方式或通过 Storyboards 添加 PagedTableView
或 PagedCollectionView
,方法是在属性检查器中指定类。
let tableView = PagedTableView(frame: <some CGRect>)
设置您期望从数据源获取的每页元素数量。
tableView.elementsPerPage = 20
tableView.updateDelegate = self
通过遵循分页协议,PagedTableView
和 PagedCollectionView
使您有机会从您所需的来源加载数据。然后,您必须返回元素计数或在发生故障时返回错误。
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
。
PagedLists 由 Rootstrap 和 German López 维护,并由我们的贡献者提供帮助。
PagedLists 在 MIT 许可证下可用。有关更多信息,请参阅 LICENSE 文件。