0

我有一个过滤器类型枚举

导入 RxSwift 导入 RxCocoa

enum FilterType {
    case all
    case rental
    case purchased
}

var currentCategory: Driver<FilterType> = Driver.just(.all)

每当我在分段点击时更新 currentCategory 时。就像下面的 currentCategory = Driver.just(.purchased)。

我总是每次都得到相同的价值。我是 RXSwift 和 RXCocoa 的新手。请帮助我摆脱这种情况。提前致谢。

4

1 回答 1

0

您以不正确的方式使用 RxSwift:每次分配到 时currentCategory,您的订阅都会被处理掉。您需要使用不同的方法:

let currentCategory = BehaviorRelay<FilterType>(value: .all)

然后在您的代码中为 BehaviorRelay 设置新值:

currentCategory.accept(.purchased)

或将其绑定到您的 UI 控件:

segmentControl.rx.value
  .map {
    switch $0 {
    case 0: return FilterType.all
    case 1: return FilterType.rental
    case 2: return FilterType.purchased
    default: return FilterType.all
    }
  }
  .bind(to: viewModel.currentCategory)
  .disposed(by: disposeBag)
于 2019-11-25T13:27:21.123 回答