🍎 iOS
[RxSwift] passing viewmodel data to viewController
틴디
2023. 3. 25. 17:06
반응형
ViewModel
var currentSelectedCategoryIdx = PublishSubject<Int>()
- 초기값이 필요없는 경우 PublishSubject로 ViewModel에 property 정의
struct Input {
// 생략
}
struct Output {
let changedCategoryIdx: Observable<Int>
}
- viewController에서 값을 받아 사용해야 하므로 Output에 반환할 Observable 타입을 정의해줌
func transform(input: Input) -> Output {
let changedCategoryIdx = currentSelectedCategoryIdx.asObserver()
return Output(changedCategoryIdx: changedCategoryIdx)
}
- transform함수에서 Observable로 반환
self?.currentSelectedCategoryIdx.onNext(categoryId)
- viewModel에서 값을 방출하고 싶은 경우 onNext로 전달
viewController
private func setupBindings() {
let input = QuoteEditorViewModel.Input()
output.changedCategoryIdx
.bind { [weak self] idx in
// 생략
}
.disposed(by: disposeBag)
}
- viewModel에서 정의해 준 observable을 바인딩 해서 사용함
728x90
반응형