-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[#35] 현재 보이는 유저 카드 셀에서의 타임이 0이 되면 자동으로 다음 셀로 스크롤 구현 #38
Conversation
- TFBaseCollectionViewCell 커스텀 - 임시 UserResponse, UserSection DTO 및 모델 구현 - viewWillAppear 이벤트를 받 trigger input 구현 - 임시 userList output 구현 - state -> timeState
- cell 모델 구현 - isTimeOver driver의 파라미터가 true가 되면 delegate로 scrollToNext함수를 호출 - delegate를 준수하는 vc에서 scrollToNext를 호출하면 timeOverTrigger event에서 void를 emit하도록 해서 timeOverTrigger가 emit할 때만 해당 셀에 대한 구독을 생성(bindViewModel)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
고생하셨습니다.
RxDataSources 사용시 Preview가 안되더라구요.
DiffableDataSource로 변경하였더니 됩니다.
Diffable로 변경한 코드도 첨부할테니 반영해보시는 것도 좋을 것 같습니다.
return ControlEvent(events: source) | ||
} | ||
} | ||
#if DEBUG |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Preview 부분 디버그로 이동
RxDataSource 사용 시 Preview 사용 안 됨
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
이 부분도 확인했습니다!
|
||
let userList = Driver.just(userSectionList) | ||
|
||
let currentPage = timeOverTrigger.withLatestFrom(currentIndex.asDriver(onErrorJustReturn: 0)) { _, page in |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
timeOverTrigger랑 합성 시 맨 처음 실행이 안되어서 수정 startWith(0) 추가함
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
0번 째 셀일 때의 처리를 고민했었는데, 두 시퀀스를 withLatestFrom으로 합성해서 startWith으로 처음 값을 추가할 수 있다는 것을 알았네요bb
UserDTO -> UserDomain
확인해주셔서 감사하고 머지하겠습니다! |
Motivation ⍰
Key Changes 🔑
미리보기는 다음과 같습니다.
현재 보이는 유저 카드 셀에서의 타임이 0이되면 자동으로 다음 셀로 스크롤되고 그 셀의 타이머가 시작됩니다.
유저 카드 컬렉션 뷰의 각 셀에 대해 대한 뷰모델을 만들고 그 뷰모델에서 구독을 생성합니다.
이 때, 구독을 하는 순간부터 타이머가 돌기 때문에 현재 보이는 유저 카드 셀의 타임이 0이 됐을 때 알림을 보내기 위해
샐을 생성할 때 time이 0이 됐을 때의 동작을 delegate에 위임합니다.
그래서 isTimeOver driver의 파라미터가 true가 되면 delegate로 scrollToNext함수를 호출합니다.
delegate를 준수하는 vc에서 scrollToNext를 호출하면 timeOverTrigger event에서 void를 emit하도록 해서
timeOverTrigger가 emit할 때만 해당 셀에 대한 구독을 생성합니다.(bindViewModel)
다음 셀로 넘어가기 위해서 현재의 인덱스를 저장하는 BehaviorSubject 상수를 구독해서 index를 갱신받아서
vc에서 do(onNext:)로 특정 셀의 index 스크롤되도록 구현했습니다.
중지 및 재개를 어떻게 구현할지 좀 고민됩니다.
To Reviewers 🙏🏻
Linked Issue 🔗