执行操作时,RxSwift不显示refreshControl

时间:2017-09-29 04:43:23

标签: swift action rx-swift uirefreshcontrol

在我的项目中我使用RxSwift和Action来处理刷新指示器,但是在运行此代码时遇到了问题。当我调试订阅工作正常但没有显示refreshControl时,刷新控件没有显示。当我在外部self.refreshControl?.beginRefreshing()

上设置if (executing == true) {时会有所不同
self.viewModel.transactionHistoryNetworkRequestAction?.executing
        .subscribeOn(MainScheduler.instance)
        .subscribe(onNext: { (executing) in
            if (executing == true) {
                self.refreshControl?.beginRefreshing()
            } else {
                self.refreshControl?.endRefreshing()
            }
        })
        .addDisposableTo(self.disposeBag)

感谢您的回答

1 个答案:

答案 0 :(得分:0)

我认为您的问题与以UIRefreshControl - beginRefreshing not working when UITableViewController is inside UINavigationController

中的回答以编程方式显示UIRefreshControll有关

我重现了您的问题(刷新控件没有显示),在将此解决方案应用于下面的代码之后,现在一切正常。

import UIKit
import RxSwift

class ViewController: UIViewController {

    let testObservable = PublishSubject<Bool>()
    let disposeBag = DisposeBag()
    @IBOutlet weak var tableView: UITableView!

    override func viewDidLoad() {
        super.viewDidLoad()
        Observable.just(true).delay(2, scheduler: MainScheduler.instance).subscribe(testObservable).disposed(by: disposeBag)
        tableView.refreshControl = UIRefreshControl()
        testObservable.observeOn(MainScheduler.instance).subscribe(onNext: { (executing) in
            print("Executing: \(executing)")
            self.tableView.refreshControl!.beginRefreshing()
            self.tableView.setContentOffset(CGPoint(x: 0, y: -self.tableView.refreshControl!.frame.size.height), animated: true)
        }).disposed(by: disposeBag)
    }
}