WooKoo Blog

물과 같이

개발/개발

RxSwift - Tap과 Action 으로 이벤트 처리

WooKoo 2021. 10. 24. 16:23

사실 둘의 장단점과 언제 어떤 걸 쓰는지 잘은 모르지만 액션처리에 대해 위 두 방법이 있다는 것을 정리해보면서 공부해보려고한다.

 

먼저 RxCocoa의 Tap  으로 구현 할 때

 

해당 액션 버튼의 아울렛을 연결 해둔 뷰 컨트롤러에서 다음과 같이 사용한다

       buttonName.rx.tap
            .throttle(.milliseconds(500), scheduler: MainScheduler.instance)
            .subscribe(onNext:{[weak self] _ in
               // 방출 할 이벤트나 처리
               print("Code")
            })
            .disposed(by: rx.disposeBag)

위 방법의 좋은점은 해당 뷰 컨트롤러에서 이벤트의 처리를 간편하게 구현 할 수 있다는 점??

쓰로틀은 해당 버튼 이벤트가 0.5마다 방출하도록 처리해준다.

 

다음은  Action 라이브러리를 임포트 했을 때의 사용 방법이다.

 

import Action

buttonName.rx.action = viewModel.makeAction()

 

액션 라이브러리를 임포트 해준 뒤 

 

buttonName 의 action 속성에 뷰 모델에서 만들어준 액션을 넣어줄 수 있다.

 

이렇게 하게 되면 뷰 모델에서 액션 이벤트 처리를 구현할 수 있다는점???

 

가장 큰 차이로 보인다.

 

뷰 모델에서의  makeAction 은 아래와 같이 구성한다.

   func makeEditAction() -> CocoaAction{
        return CocoaAction{_ in
			print("Code")
        }
    }

코코아 액션을 리턴하면서 코코아 액션 안에 클로저로 실행 할 코드들을 넣어준다.

 

 

간단하게 RxSwift에서 버튼 액션 처리에 대한 방법 2가지를 알아보았다.