PagingDataControllerExtension 2.1.2

PagingDataControllerExtension 2.1.2

测试已测试
Lang语言 SwiftSwift
许可证 MIT
Released最新发布Apr 2019
SPM支持 SPM

维护者 congncif



 
依赖项
PagingDataController>= 0
SiFUtilities>= 0
SVPullToRefresh>= 0
 

PagingDataControllerExtension

Version License Platform

PagingDataController 是一个易于实现分页加载数据(分页)的库。它通过几行代码提供简短的设置。您无需担心页面管理,何时加载数据的下一页,等等。

PagingDataControllerExtension 是使用 SVPullToRefresh 构建的。因此,您无需手动添加控件。但如果您想的话,也可以自定义一切。

要求

  • iOS 8.0+
  • Xcode 8.3+
  • Swift 3.1+

安装

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

pod "PagingDataControllerExtension"

...

Provider 是一个处理分页加载数据的组件。一旦处理完成,将返回一个对象列表或错误。

DataSource 保存由 Provider 加载的所有数据,并按页顺序排列。

实现了 PagingDataController 的控制器本身包含一个 Provider 和一个 dataSource。虽然 dataSource 可以自动注入,但 provider 需要显式声明。

用法

  1. 创建一个新的项目。
  2. ViewController.swift 中,添加一个 tableViewcollectionView 显示项目列表。
  3. 创建 Provider
import UIKit
import PagingDataController
import Alamofire

struct GithubUsersProvider: PagingProviderProtocol {
    
    //custom pageSize here
    var pageSize: Int = 36
    
    func loadData(parameters: AnyObject?, page: Int, completion: (([Dictionary<String, AnyObject>], Error?) -> ())?) {
        
        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]]
        }
    }
    
}
  1. ViewController.swift 中,实现 UITableViewDataSourceUICollectionViewDataSource 的方法来渲染数据,使其符合 PagingControllerProtocol 协议。
//Provider definition
lazy var provider = GithubUsersProvider()

复制以下方法并将其放置在 viewDidLoad() 下方

override func viewDidFinishLayout() {
    super.viewDidFinishLayout()
    setupForPaging()
}
  • 要自定义参数,实现此方法 parametersForPage(_:)
  • 要处理错误,实现此方法 errorWarningForPage(_:)
  1. 编译并运行,享受乐趣

作者

NGUYEN CHI CONG,[email protected]

授权

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