Rxswift скрыть кнопку внутри UITableViewCell после нажатия
У меня есть addButton внутри UITableCieCwell. Я хочу, чтобы addButton исчезал после того, как пользователь щелкнул по нему, поэтому я создал Action и привязал его к addButton.
Тем не менее, все addButton исчезли, хотя я только запускаю свое приложение.
Я очень новичок в RxSwift, пожалуйста, помогите мне.
Bind UI
viewModel.courses
.asObservable()
.bind(to: collectionView.rx.items(cellIdentifier: AddableCourseCell.reuseIdentifier, cellType: AddableCourseCell.self)) { (row, element, cell) in
let action = self.viewModel.actions.value[row]
action.enabled.asObservable()
.bind(to: cell.addButton.rx.isHidden)
.disposed(by: self.disposeBag)
cell.addButton.rx
.tap
.debounce(0.3, scheduler: MainScheduler.instance)
.subscribe({ (event) in
action.execute(element)
}).disposed(by: cell.disposeBag)
}.disposed(by: disposeBag)
ViewModel
class ViewModel {
var courses: Variable<[Course]> = Variable([])
var selectedCourses: Variable<[Course]> = Variable([])
var actions = Variable<[Action<Course, Bool>]>([])
private func generateAddActions(courses: [Course]) -> [Action<Course, Bool>] {
var actions: [Action<Course, Bool>] = []
for _ in courses {
let action = Action<Enrollment, Bool>(workFactory: { (input) -> Observable<Bool> in
let isAdded = selectedCourses.value.contains(input)
if !isAdded {
self.selectedCourses.value.append(input)
}
return Observable.just(isAdded)
})
actions.append(action)
}
return actions
}
}
1 ответ
Привет один совет, который я могу дать вам, чтобы добавить .debug()
в action
наблюдаемый, чтобы вы могли видеть испускаемые значения. Тем не менее, я полагаю, что причиной ваших проблем является то, что action
начальное значение наблюдаемой true
который ограничен isHidden
атрибут addButton