Драйвер не обновлен до последней версии
У меня есть одно перечисление типа фильтра
импорт 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)