【发布时间】:2016-07-25 23:22:24
【问题描述】:
我正在使用UIRefreshControl + Variable 绑定重新加载数据。
它正在工作,但是,我觉得以下内容不对:
1) 我知道在 RXCocoa 扩展中有一个 rx_refreshing 变量,但我无法让它在这种情况下工作。
2) 我绑定了两次答案(这是数组的Variable)。一次是在我加载视图控制器时,另一次是在 UIRefreshControl 刷新时。
3) 我检查UIRefreshControl 是否令人耳目一新的部分看起来真的很尴尬。感觉好像违背了使用响应式的目的?
...
let answers: Variable<[Answer]> = Variable([])
override func viewDidLoad() {
loadAnswers()
.shareReplay(1)
.bindTo(answers)
.addDisposableTo(self.disposeBag)
setupRx()
}
func loadAnswers() -> Observable<[Answer]> {
return Network.rxArrayRequest(Spark.Answers)
}
func setupRx() {
rc.rx_controlEvent(.ValueChanged)
.map { _ in !self.rc.refreshing }
.filter { $0 == false }
.flatMapLatest { [unowned self] _ in
return self.loadAnswers()
}
.bindTo(answers)
.addDisposableTo(self.disposeBag)
rc.rx_controlEvent(.ValueChanged)
.map { _ in self.rc.refreshing }
.filter { $0 == true }
.subscribeNext { [unowned self] _ in
self.rc.endRefreshing()
}
.addDisposableTo(self.disposeBag)
}
...
【问题讨论】:
标签: ios swift uirefreshcontrol rx-swift