@@ -23,8 +23,7 @@ final class RecommendedRoutineViewController: BaseViewController<RecommendedRout
2323 static let headerStackViewHeight : CGFloat = 40
2424 static let recommendedRoutineStackViewSpacing : CGFloat = 12
2525 static let recommendedRoutineScrollViewTopSpacing : CGFloat = 12
26- static let recommendedRoutineScrollViewBottomSpacing : CGFloat = 10
27- static let recommendedRoutineStackViewBottomSpacing : CGFloat = 50
26+ static let recommendedRoutineStackViewBottomSpacing : CGFloat = 65
2827 static let routineCardHeight : CGFloat = 80
2928 static let registerEmotionButtonTopSpacing : CGFloat = 20
3029 static let registerEmotionButtonHeight : CGFloat = 66
@@ -44,7 +43,7 @@ final class RecommendedRoutineViewController: BaseViewController<RecommendedRout
4443
4544 private let recommendedRoutineScrollView = UIScrollView ( )
4645 private let recommendedRoutineStackView = UIStackView ( )
47- private var recommendedRoutineCards : [ Int : RecommendedRoutineCardView ] = [ : ]
46+ private var recommendedRoutineCards : [ Int : RoutineCardView ] = [ : ]
4847 private let registerEmotionButton = RegisterEmotionButtonView ( )
4948 private let recommendedRoutineEmptyView = RecommendedRoutineEmptyView ( )
5049
@@ -167,7 +166,7 @@ final class RecommendedRoutineViewController: BaseViewController<RecommendedRout
167166 make. leading. equalTo ( safeArea) . offset ( Layout . horizontalMargin)
168167 make. trailing. equalTo ( safeArea) . inset ( Layout . horizontalMargin)
169168 make. top. equalTo ( headerStackView. snp. bottom) . offset ( Layout . recommendedRoutineScrollViewTopSpacing)
170- make. bottom. equalTo ( safeArea) . inset ( Layout . recommendedRoutineScrollViewBottomSpacing )
169+ make. bottom. equalTo ( safeArea)
171170 }
172171
173172 recommendedRoutineStackView. snp. makeConstraints { make in
@@ -200,6 +199,7 @@ final class RecommendedRoutineViewController: BaseViewController<RecommendedRout
200199 . sink { [ weak self] selectedCategory in
201200 self ? . categoryView. updateSelectedCategory ( selectedCategory: selectedCategory)
202201 self ? . showEmotionButton ( isShowEmotionButton: selectedCategory == . recommendation)
202+ self ? . recommendedRoutineScrollView. setContentOffset ( CGPoint ( x: 0 , y: 0 ) , animated: true )
203203 }
204204 . store ( in: & cancellables)
205205
@@ -231,17 +231,12 @@ final class RecommendedRoutineViewController: BaseViewController<RecommendedRout
231231 }
232232 recommendedRoutineCards. removeAll ( )
233233
234- // let testView = RoutineCardView()
235- // recommendedRoutineStackView.addArrangedSubview(testView)
236234 recommendedRoutineEmptyView. isHidden = !recommendedRoutines. isEmpty
237235 for routine in recommendedRoutines {
238- let routineCard = RecommendedRoutineCardView ( recommendedRoutine: routine)
239- recommendedRoutineCards [ routine. id] = routineCard
240- recommendedRoutineStackView. addArrangedSubview ( routineCard)
241- routineCard. delegate = self
242- routineCard. snp. makeConstraints { make in
243- make. height. equalTo ( Layout . routineCardHeight)
244- }
236+ let routineCardView = RoutineCardView ( routine: routine)
237+ recommendedRoutineCards [ routine. id] = routineCardView
238+ routineCardView. delegate = self
239+ recommendedRoutineStackView. addArrangedSubview ( routineCardView)
245240 }
246241 }
247242
@@ -298,25 +293,14 @@ extension RecommendedRoutineViewController: RoutineCategoryViewDelegate {
298293 }
299294}
300295
301- // MARK: RecommendedRoutineCardViewDelegate
302- extension RecommendedRoutineViewController : RecommendedRoutineCardViewDelegate {
303- func recommendedRoutineCardView( _ sender: RecommendedRoutineCardView , didTapRecommendedRoutine routine: RecommendedRoutine ) {
304- guard let routineCreationViewModel = DIContainer . shared. resolve ( type: RoutineCreationViewModel . self)
305- else { fatalError ( " routineCreationViewModel 의존성이 등록되지 않았습니다. " ) }
306-
307- let routineCreationView = RoutineCreationViewController ( viewModel: routineCreationViewModel, recommendRoutineId: routine. id)
308- routineCreationView. hidesBottomBarWhenPushed = true
309- self . navigationController? . pushViewController ( routineCreationView, animated: true )
310- }
311- }
312-
313296// MARK: SelectableItemTableViewDelegate
314297extension RecommendedRoutineViewController : SelectableItemTableViewDelegate {
315298 func selectableItemTableView< T: SelectableItem & CaseIterable & Equatable > ( _ sender: SelectableItemTableView < T > , didSelectItem: T ? ) {
316299 guard let didSelectLevel = didSelectItem as? RoutineLevelType ?
317300 else { return }
318301 viewModel. action ( input: . selectLevel( selectedLevel: didSelectLevel) )
319302 levelButton. updateButton ( level: didSelectLevel)
303+ recommendedRoutineScrollView. setContentOffset ( CGPoint ( x: 0 , y: 0 ) , animated: true )
320304 }
321305}
322306
@@ -333,6 +317,7 @@ extension RecommendedRoutineViewController: FloatingMenuViewDelegate {
333317 }
334318}
335319
320+ // MARK: RegisterEmotionButtonViewDelegate
336321extension RecommendedRoutineViewController : RegisterEmotionButtonViewDelegate {
337322 func registerEmotionButtonViewDidTapRegisterButton( _ sender: RegisterEmotionButtonView ) {
338323 guard let emotionRegisterViewModel = DIContainer . shared. resolve ( type: EmotionRegisterViewModel . self)
@@ -343,3 +328,15 @@ extension RecommendedRoutineViewController: RegisterEmotionButtonViewDelegate {
343328 self . navigationController? . pushViewController ( emotionRegisterView, animated: true )
344329 }
345330}
331+
332+ // MARK: RoutineCardViewDelegate
333+ extension RecommendedRoutineViewController : RoutineCardViewDelegate {
334+ func routineCardView( _ sender: RoutineCardView , didTapPlusButton routine: RecommendedRoutine ) {
335+ guard let routineCreationViewModel = DIContainer . shared. resolve ( type: RoutineCreationViewModel . self)
336+ else { fatalError ( " routineCreationViewModel 의존성이 등록되지 않았습니다. " ) }
337+
338+ let routineCreationView = RoutineCreationViewController ( viewModel: routineCreationViewModel, recommendRoutineId: routine. id)
339+ routineCreationView. hidesBottomBarWhenPushed = true
340+ self . navigationController? . pushViewController ( routineCreationView, animated: true )
341+ }
342+ }
0 commit comments