CollectionView의 view에서 ViewController로 이벤트를 전달하는 방법 #92
nomatterjun
started this conversation in
Show and tell
Replies: 1 comment 1 reply
-
나는 보통 Header에 있는 UI를 직접 참조해서 header.someButton.rx.tap
//... 그래서 이게 |
Beta Was this translation helpful? Give feedback.
1 reply
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
헤더에서 버튼 클릭 이벤트를 처리를 해줘야하는데,
같은 클래스를 다가오는 이벤트랑 타임라인 헤더 양쪽에 모두 사용하고 있어서
탭 된 헤더가 어떤 헤더인지 구분하고 동작을 VC에 전달해줘야하는 구현이 필요한 상황..!
예를 들어
collectionView
의 헤더로headerView
를 사용하고 있다고 해보자.이 때
headerView
는 자신만의reactor
도 가지고 있어.1. reactor에 Global State를 만들어 VC에 전달
reactor
에 Global State를 만들어서 상위 VC에서 직접적으로 받아서 원하는 동작을 수행시키는 방법이야.단점은 데이터의 흐름이 부자연스럽다는 점..?
ReactorKit은
State
stream만이 VC에 영향을 끼치도록 제한해두고 있는데이 경우에는 대응된
View
에 바로 데이터를 전달하는게 아니라 직접적으로 그 흐름을 무시한 건 아니지만어쨌든 UI layer단에 데이터를 직접 전달하는거긴 하니까 그 흐름을 무시한거라는 생각이 있어.
그리고
HomeViewReactor
가 아니라HomeVC
에 데이터를 전달한 것이기 때문에 트리거를 하나 더 놔주기도 해야해..!2. view에서 이벤트를 전달해준 뒤 VC의 reactor에서 처리
두 번째로
view
에서 상위 VC로 이벤트를 전달해준 뒤 VC의reactor
에 전달해주는 형태야.ReactorKit에서 제시한 이 방식과 동일하기 때문에 아무 문제가 없어.
이벤트가 바로
HomeViewReactor
로 전달되기 때문에 중간 트리거도 필요가 없어!원래는 뭐가 좋을 것 같냐구 같이 이야기해보려고 했는데
적다보니까 그냥 2번 방법이 맞는듯..
적던 게 아까우니까 그냥 적어둘게!
지금 맘에 안드는건 두 경우 모두
bind(reactor:)
메서드 외부에서 이루어진다는 점인데혹시 이 안에서 동작시킬 수 있는 방법이 생각난다면 공유해주렴.. 🥴
Beta Was this translation helpful? Give feedback.
All reactions