RxPager 1.0.0

RxPager 1.0.0

测试已测试
Lang语言 SwiftSwift
许可证 MIT
发布最新发布2017年1月
SwiftSwift 版本3.0
SPM支持 SPM

PG 维护。



RxPager 1.0.0

RxPager

使用方法

// MARK: Example 1

typealias Page = [Int]
typealias Callback = () -> Void

// take previous Page, and create next one
let nextPage = { (previousPage: Page?) -> Observable<Page> in
let last = previousPage?.last ?? 0
return Observable.just([last + 1, last + 2, last + 3])
}

// return true if there are more pages to be emitted
let hasNext = { (page: Page) -> Bool in
guard let last = page.last else { return true }
return last < 10 // arbitrary condition for the demo
}

// create the pager
let trigger = PublishSubject<Void>()
let page$ = Observable.page(nextPage, while: hasNext, when: trigger)
let next = trigger.onNext

page$.subscribe(onNext: { print($0) })
// print [1, 2 ,3]

next() // print [4, 5, 6]
next() // print [7, 8, 9]
next() // print [10, 11, 12]

// MARK: Example 2 (page from array)

Observable
.page(Array(1...10), by: 3, when: trigger)
.subscribe(onNext: { print($0) })

// print [1, 2 ,3]
next() // print [4, 5, 6]
next() // print [4, 5, 6]
next() // print [10]

查看更多示例,请参阅示例

示例

要运行示例项目或运行游乐场,请先从仓库克隆代码,然后从Example目录中运行 pod install

要求

安装

RxPager 通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile 中

pod "RxPager"

致谢

这个 Pod 是受 @mttkay 的作品的启发,并使用在这里讨论的想法重构https://github.com/RxSwiftCommunity/RxSwiftExt/issues/30

许可证

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