본문 바로가기
🍎 iOS

[RxSwift] passing viewmodel data to viewController

by 틴디 2023. 3. 25.
728x90
반응형

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
반응형

댓글