测试已测试 | ✓ |
语言语言 | SwiftSwift |
许可 | MIT |
发布上次发布 | 2017年11月 |
SwiftSwift 版本 | 3.0.1 |
SPM支持 SPM | ✗ |
由 WANG Jie 维护。
KissPaginate 简化您的 tableView 分页实现。
要运行示例项目,请先克隆仓库,然后在 Example 目录中运行 pod install
class ViewController: PaginateViewController {
@IBOutlet weak var noElementLabel: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
tableView.dataSource = self
refreshElements()
}
override var getElementsClosure: (page: Int, successHandler: GetElementsSuccessHandler, failureHandler: (error: Error) -> Void) -> Void {
return getElementList
}
func getElementList(page: Int, successHandler: GetElementsSuccessHandler, failureHandler: (error: Error) -> Void) {
let elements = (0...20).map { "page \(page), element index" + String($0) }
delay(2) {
successHandler(elements, true)
}
}
override func displayNoElementIfNeeded(noElement: Bool) {
noElementLabel.isHidden = !noElement
}
}
extension ViewController: UITableViewDataSource {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return elements.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell")!
let element = getElement(String.self, at: (indexPath as NSIndexPath).row)
cell.textLabel?.text = element
if elements.count == (indexPath as NSIndexPath).row + 1 {
loadNextPage()
}
return cell
}
}
如果您的 ViewController 已有父类,您可以继承协议 PaginateView
class PaginateView: UIViewController, PaginateView {
var presenter: PaginatePresenter!
var refreshControl: UIRefreshControl!
var bottomRefresh: UIActivityIndicatorView!
@IBOutlet weak var tableView: UITableView!
@IBOutlet weak var noElementLabel: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
presenter = PaginatePresenter(paginatable: self)
presenter.start()
tableView.dataSource = self
refreshElements()
}
var getElementsClosure: (page: Int, successHandler: GetElementsSuccessHandler, failureHandler: (error: Error) -> Void) -> Void {
return getElementList
}
func getElementList(page: Int, successHandler: GetElementsSuccessHandler, failureHandler: (error: Error) -> Void) {
let elements = (0...20).map { "page \(page), element index" + String($0) }
delay(2) {
successHandler(elements, true)
}
}
func displayNoElementIfNeeded(noElement: Bool) {
noElementLabel.isHidden = !noElement
}
}
extension PaginateView: UITableViewDataSource {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return elements.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell")!
let element = getElement(String.self, at: (indexPath as NSIndexPath).row)
cell.textLabel?.text = element
if elements.count == (indexPath as NSIndexPath).row + 1 {
loadNextPage()
}
return cell
}
}
KissPaginate 通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile
作者
pod 'KissPaginate'
KissPaginate 在 MIT 许可下提供。有关更多信息,请参阅 LICENSE 文件。
CocoaPods 是由