[Feat] EmptyView 및 LoadingView 추가 & 세부레이아웃 수정#116
Conversation
|
|
||
| public struct Output { | ||
| var fetchedDetailData = BehaviorRelay<DreamDetailEntity?>(value: nil) | ||
| var loadingStatus = BehaviorRelay<Bool>(value: true) |
There was a problem hiding this comment.
@L-j-h-c 처음에 초기값을 지정해주지 않으니 상세뷰 띄울때 로딩뷰가 잘 안떠서요..! PublishRelay로 해줘도 잘 되셨나용?? 그러면.. 이 문제가 아니엇던 것일까요,,
There was a problem hiding this comment.
@Suyeon9911 아뇨~! 다시 보니까 이 방법이 좋은 것 같습니다~ publishRelay로 하면 viewController에서는 output이 transform된 이후에 구독하는거라 로딩이 안 뜨는 것 같네요!
| } | ||
|
|
||
| self.contentLabel.text = content | ||
| contentLabel.addLabelSpacing(kernValue: -0.14) |
There was a problem hiding this comment.
아마 paragraphStyle이 다시 적용되고 있어서 그런 것 같은데, 이 메서드 내부에서 style.linebreakMode를 다시 적용하면 달라질 수도 있을 것 같네요~!
|
|
||
| input.viewWillAppear.subscribe(onNext: { _ in | ||
| output.loadingStatus.accept(true) | ||
| self.useCase.fetchDreamRecord() |
There was a problem hiding this comment.
1차 QA 우선 반영을 위해 따로 이슈 파서 해결하도록 하겠습니다 !!
| $0.isHidden = true | ||
| } | ||
|
|
||
| self.view.addSubview(emptyLabel) |
There was a problem hiding this comment.
empty Records가 두번 들어오면 이 부분에서 emptyLabel도 두번 추가되는 경우가 생기겠네요. 여기서도 removeFormSuperView 이후에 추가한는 것이 좋아보입니다!
There was a problem hiding this comment.
1차 QA 우선 반영을 위해 따로 이슈 파서 해결하도록 하겠습니다 !!
| self.viewModel.fetchedDreamRecord = model | ||
| self.dreamCardCollectionViewAdapter = DreamCardCollectionViewAdapter( | ||
| collectionView: self.dreamCardCollectionView, adapterDataSource: self.viewModel) | ||
| self.setCollectionViewAdapter() |
There was a problem hiding this comment.
전체적으로 fetchHomeData에서는 세가지 기능을 하고 있네요
- HomeEntity에서 홈 전체에 해당하는 data 바인딩 -> welcomeLabel의 텍스트
- 레이아웃 설정
- 받은 모델을 데이터소스에 넣고 컬렉션뷰 재설정
일단 기능별로 코드를 분리할 수도 있을 것 같아요!
그리고 slef.viewModel의 fetchedDreamRecord를 뷰컨에서 갱신해주고 있는데, 사실 HomeEntity를 먼저 받아오는 곳은 viewModel이기 때문에 뷰모델에서 이 작업을 수행할 수 있을 것 같습니다. 현재 구조는 뷰모델 -> 뷰컨 -> 뷰모델인데, 뷰모델에서 바로 처리할 수 있는 일이니까요!
그리고 dreamCardCollectionViewAdapter를 다시 생성해주고, setCollectionViewAdapter에서 구독을 다시 해주고 있습니다. dreamCardCollectionViewAdapter를 다시 만들어주는 것은 컬렉션뷰를 업데이트하기 위함이라 생각하는데, 어댑터는 뷰디드로드에서 처음에 인스턴스 생성만 해주고, reloadData만 호출해도 목표하는 바가 이루어질 것 같아요!
setCollectionViewAapater에서는 마찬가지로 중복 구독로 인한 메모리 낭비가 일어날 수 있습니다.
There was a problem hiding this comment.
덧붙이자면 ㅎㅎ 뷰모델의 Input 내에 fetch 순간에 사용할 Observable을 만들어 두고, 뷰 컨트롤러에서는 records 가 비어있지 않을 때 해당 Observable에 이벤트를 보내주는 식으로 바인드 해주어 흐름을 형성할 수도 있을 것 같습니다 !!
There was a problem hiding this comment.
1차 QA 우선 반영을 위해 따로 이슈 파서 해결하도록 하겠습니다 !!
| public final class VoiceNoticeView: UIView { | ||
|
|
| self.viewModel.fetchedDreamRecord = model | ||
| self.dreamCardCollectionViewAdapter = DreamCardCollectionViewAdapter( | ||
| collectionView: self.dreamCardCollectionView, adapterDataSource: self.viewModel) | ||
| self.setCollectionViewAdapter() |
There was a problem hiding this comment.
덧붙이자면 ㅎㅎ 뷰모델의 Input 내에 fetch 순간에 사용할 Observable을 만들어 두고, 뷰 컨트롤러에서는 records 가 비어있지 않을 때 해당 Observable에 이벤트를 보내주는 식으로 바인드 해주어 흐름을 형성할 수도 있을 것 같습니다 !!
👻 작업한 내용
QA 해결
이슈 해결
+) 세부 레이아웃을 수정하긴 했는데 제목 길이나 기록 길이에 따라 달라지는 부분이 있네요.. 이건 데이터가 패치된 상태를 옵저빙해서 레이아웃을 다시 잡아주는 방식을 생각했는데 괜찮을까요??
🎤 PR Point
📸 스크린샷
📮 관련 이슈