Драйвер не обновлен до последней версии

У меня есть одно перечисление типа фильтра

импорт RxSwift импорт RxCocoa

enum FilterType {
    case all
    case rental
    case purchased
}

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

всякий раз, когда я обновляю текущую категорию при щелчке по сегменту. как показано ниже currentCategory = Driver.just(.purchased).

Я всегда каждый раз получаю одну и ту же ценность. Я новичок в RXSwift и RXCocoa. Пожалуйста, помогите мне выйти из этой ситуации. Заранее спасибо.

1 ответ

Вы неправильно используете 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)
Другие вопросы по тегам