使用 RxSwift 的 UIRefreshControl

Res*_*had 6 swift rx-swift rx-cocoa

您好,我正在尝试使 UIRefreshControl 与 RxSwift 一起使用。因此,我使用RxSwift 示例中的活动指示器。

在我的 viewModel 中,我有以下函数和变量来获取我的数据。

// MARK: - Variables

var data = Variable<[Data]>([])

// MARK: - Public Interface

func getData() {
    let request = Data.readAll()
    _ = request.rxResult().subscribe(onNext: { response in
        self.data.value = response.data
    }, onError: { (Error) in
    }, onCompleted: {
    }, onDisposed: {
    })
}
Run Code Online (Sandbox Code Playgroud)

然后在我的视图控制器中,我尝试将其绑定到 UIRefreshcontrol 和我拥有的集合视图。

let refresher: UIRefreshControl = UIRefreshControl()
let indicator = ActivityIndicator()

    indicator.asObservable()
    .bindTo(refresher.rx.isRefreshing)
    .addDisposableTo(disposeBag)

    let resultObservable = viewModel.data.asObservable()
        .trackActivity(indicator)
        .bindTo(self.collectionView.rx.items(cellIdentifier: reuseCell, cellType: DataCollectionViewCell.self)) {
            row, data, cell in
            cell.configureCell(with: data)
        }
    resultObservable.addDisposableTo(disposeBag)
Run Code Online (Sandbox Code Playgroud)

我的问题是,为了让这项工作我缺少什么?现在,如果我启动应用程序,除了黑色活动指示器不会停止旋转之外,什么也不会发生。

iOS*_*ost 3

refresher
        .rx.controlEvent(UIControlEvents.valueChanged)
        .subscribe(onNext: { [weak self] in
    //Put your hide activity code here
            self?.refresher.endRefreshing()
            }, onCompleted: nil, onDisposed: nil)
        .disposed(by: disposeBag)
Run Code Online (Sandbox Code Playgroud)

订阅刷新事件(UIRefreshControl)