사실 둘의 장단점과 언제 어떤 걸 쓰는지 잘은 모르지만 액션처리에 대해 위 두 방법이 있다는 것을 정리해보면서 공부해보려고한다.
먼저 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가지를 알아보았다.
'개발 > 개발' 카테고리의 다른 글
[iOS] Push Notification Error - InActive State (0) | 2021.11.10 |
---|---|
Swift - 프로토콜 맛보기 (0) | 2021.11.02 |
[Swift] - DiscardableResult (0) | 2021.10.17 |
[iOS] - iOS 의존성 주입(Dependency Injection) 알아보기 - 2 (0) | 2021.08.23 |
[iOS] - iOS 환경에서 의존성 주입(Dependency Injection) 알아보기 (0) | 2021.08.23 |