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
Uh oh!
There was an error while loading. Please reload this page.
-
헤더에서 버튼 클릭 이벤트를 처리를 해줘야하는데,
같은 클래스를 다가오는 이벤트랑 타임라인 헤더 양쪽에 모두 사용하고 있어서
탭 된 헤더가 어떤 헤더인지 구분하고 동작을 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