PagingDataController
PagingDataController 是一个用于简化分页加载数据的库。它通过少量代码提供简短的配置。您无需担心页面管理、何时加载下一页数据等问题。
要求
- iOS 8.0+
- Xcode 8.3+
- Swift 3.1+
安装
CocoaPods
pod 'PagingDataController'
Carthage
github "congncif/PagingDataController"
它是如何工作的?
Provider 是一个处理按页加载数据的组件。处理完成后,将返回对象列表或错误。
DataSource 存储由 Provider 加载的所有数据,并将它们按照页码顺序排列。
实现了 PagingDataController
控制的控制器本身包含一个 Provider 和 DataSource。虽然 dataSource
可以自动注入,但 provider
需要显式声明。
用法
- 创建一个新的项目。
- 在
ViewController.swift
中,添加一个tableView
或collectionView
来显示项目列表。 - 创建
Provider
struct GithubUsersProvider: PagingProviderProtocol {
// custom pageSize here
var pageSize: Int = 36
func loadData(parameters: AnyObject?, page: Int, completion: @escaping ([[String: AnyObject]], Error?) -> Void) {
let apiPath = "https://api.github.com/search/users?q=apple&page=\(page + 1)&per_page=\(pageSize)"
Alamofire.request(apiPath, method: .get).responseJSON { response in
var error: Error? = response.result.error
var result: [[String: AnyObject]] = []
defer {
completion(result, error)
}
guard let data = (response.result.value as? [String: AnyObject]) else {
return
}
result = data["items"] as! [[String: AnyObject]]
}
}
}
- 在
ViewController.swift
中,实现UITableViewDataSource
或UICollectionViewDataSource
的方法以渲染数据,使其符合PagingControllerProtocol
协议
// 🚀 Just 4 steps to setup a Paging View Controller
class GithubUsersViewController: UIViewController, PagingControllerProtocol, PagingViewControllable {
@IBOutlet var tableView: UITableView!
// 1️⃣ [Step 1]: Provider definition.
lazy var provider = GithubUsersProvider()
// 2️⃣ [Step 2]: setup paging in single line of code.
/******************************************
Copy this method into your view controller
******************************************/
override func viewDidFinishInitialLayout() {
setupPagingController()
}
// 3️⃣ [Step 3]: Pass parameters for fetching data by page, default is nil.
func parametersForPage(_ page: Int) -> AnyObject? {
return nil
}
// 4️⃣ [Step 4]: Handle error when fetching failed.
func errorWarningForPage(_ page: Int, error: Error) {
showErrorAlert(error)
}
}
- 构建并运行,享受乐趣
作者
NGUYEN CHI CONG, [email protected]
许可
PagingDataController 在 MIT 许可下可用。有关更多信息,请参阅 LICENSE 文件。