Skip to content
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

Feat [#6] Onboarding Survey 관련 UI 구현 #7

Merged
merged 14 commits into from
Apr 1, 2024
Merged

Conversation

kim-seonwoo
Copy link
Member

@kim-seonwoo kim-seonwoo commented Mar 29, 2024

👾 작업 내용

  • Onboarding 관련 로직을 담는 OnboardingViewModel을 작업 하였습니다.
    각각 온보딩 단계의 SurveyButton들에 대한 데이터를 이중 배열로 작업하였습니다.
    @Published
    var surveyButtonItems: [[SurveyButtonInfo]]
  • OnbardingViewModel에서 Published된 프로퍼티는 다음과 같습니다.
    @Published
    var OnboardingState: Int
    //온보딩 각 단계를 나타내는 정수 입니다.
    
    @Published
    var isCompleted: Bool
    // 버튼의 활성화 여부를 나타냅니다.
  • OnboardingContentView를 만들어 Onboarding 단계에 이용되는 메인 바디를 만들었습니다.
        VStack(alignment: .leading) {
            Spacer(minLength: 0)
                .frame(height: 60)
            OnboardingProgressView()
            Spacer(minLength: 0)
                .frame(height: 31)
            OnboardingTitleView()
            SurveyContainerView()
                .frame(maxWidth: .infinity, maxHeight: .infinity)
            NextButtonView(viewModel: viewModel)
        }

-SurveyContainerView는 매 온보딩 뷰마다의 핵심 뷰 입니다.
switch case를 통해 처리하였습니다.

    private func SurveyContainerView() -> some View {
        VStack {
            switch viewModel.OnboardingState {
            case 0, 1, 2:
                SurveyView(viewModel: viewModel)
            case 3:
                GoalTimeView()
            case 4:
                PermissionView()
            case 5:
                AppSelectView()
            default:
                RoundedRectangle(cornerRadius: 25.0 )
                    .foregroundColor(.green)
            }
        }
    }
  • OnboardingContentView에는 @StateObject를 사용하고, 그 외 하위 뷰에는 @ObservedObject를 이용하여 viewModel을 가져왔습니다.

🚀 PR Point

  • MVVM 구조가 처음이라 viewModel로의 분리가 어색한 부분을 알려주세요!
  • 레이아웃 짜는 부분이 어색하다면 알려주세요!
  • Extenstion 으로 view를 빼서 바디에 부담을 뺴는 방식을 하였습니다. 어떻게 생각하시나요?
extension OnboardingContentView {
    private func OnboardingProgressView() -> some View {
        VStack {
  • survey 이외의 OboardingContainerView 부분은 아직 미구현입니다. (Picker, appSelect)

📸 스크린샷

구현 내용 스크린샷
Onboarding (SE)
  • 다른 기기도 잘 나오는 것 같아요!

✅ CheckList

  • 오류 없이 빌드되는지 확인
  • 로그용 print문 제거
  • 불필요한 주석 제거
  • 코드 컨벤션 확인

🔗 Issue

Resolved #6

@kim-seonwoo kim-seonwoo added 😎선우 선우의 issue ✨FEAT 기능 구현 labels Mar 29, 2024
@kim-seonwoo kim-seonwoo added this to the 🔭2차 스프린트🪐 milestone Mar 29, 2024
@kim-seonwoo kim-seonwoo requested a review from Zoe0929 March 29, 2024 15:34
@kim-seonwoo kim-seonwoo self-assigned this Mar 29, 2024
@kim-seonwoo kim-seonwoo linked an issue Mar 29, 2024 that may be closed by this pull request
Copy link
Member

@Zoe0929 Zoe0929 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

컨벤션 하나만 수정해주세요!

@Zoe0929 Zoe0929 self-requested a review March 31, 2024 16:26
Copy link
Member

@Zoe0929 Zoe0929 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍 고생하셨습니댜~!~! LGTM이요

@kim-seonwoo kim-seonwoo merged commit dccdfac into develop Apr 1, 2024
@Zoe0929 Zoe0929 deleted the feat/#6-Survey branch June 19, 2024 02:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
✨FEAT 기능 구현 😎선우 선우의 issue
Projects
Status: Done
Development

Successfully merging this pull request may close these issues.

[Feat] SurveyView UI 구현
2 participants