๐Ÿ”ฅ๋งก์€ ์—ญํ• 

์˜จ๋ณด๋”ฉ ๋ทฐ

์˜จ๋ณด๋”ฉํ”Œ๋กœ์šฐ์—์„œ ์ค‘์š”ํ–ˆ๋˜ ๋ถ€๋ถ„์ด ์œ ์ €์—๊ฒŒ ์˜จ๋ณด๋”ฉ ๊ณผ์ •์ด ์–ด๋Š์ •๋„ ์ง„ํ–‰๋˜์—ˆ๋Š”์ง€๋ฅผ ์•Œ๋ ค์ฃผ๋Š” progressview์™€ onboardingView๋“ค์ด push๋˜๋Š” ๊ณผ์ •์—์„œ๋„ ์œ„์น˜๊ฐ€ ๋ณ€ํ•˜์ง€์•Š๋Š” button์„ ํ†ตํ•ด ์œ ์ €์—๊ฒŒ ์˜จ๋ณด๋”ฉ์ด ํ•˜๋‚˜์˜ ํ”Œ๋กœ์šฐ๋ผ๋Š”๊ฑธ ์ธ์‹์‹œ์ผœ์ฃผ๋Š” ๋ถ€๋ถ„์ด ๋งค์šฐ ์ค‘์š”ํ•œ ๊ณผ์ œ์˜€์Šต๋‹ˆ๋‹ค

์ „์ฒด์ ์ธ ๋กœ์ง

enum์„ ํ™œ์šฉํ•œ paging logic

  1. ์ž„์‹ ์ฃผ์ฐจ์ •๋ณด๋ฅผ ์œ ์ €์—๊ฒŒ ์ž…๋ ฅ๋ฐ›๋Š” ํŽ˜์ด์ง€
  2. ํƒœ๋ช…์„ ์œ ์ €์—๊ฒŒ ์ž…๋ ฅ๋ฐ›๋Š” ํŽ˜์ด์ง€
  1. ๋กœ๊ทธ์ธํŽ˜์ด์ง€
  2. ์ž„์‹ ์ฃผ์ฐจํŽ˜์ด์ง€
  3. ํƒœ๋ช…ํŽ˜์ด์ง€
  4. ์˜จ๋ณด๋”ฉ ์™„๋ฃŒ ํŽ˜์ด์ง€

์ฆ‰, ์ž„์‹ ์ฃผ์ฐจ๋ฅผ ์œ ์ €์—๊ฒŒ ์ž…๋ ฅ๋ฐ›๋Š” ํŽ˜์ด์ง€์—์„œ๋Š” ์•ž์œผ๋กœ ๊ฐ€๋ฉด ํƒœ๋ช…ํŽ˜์ด์ง€ ๋’ค๋กœ๊ฐ€๋ฉด ๋กœ๊ทธ์ธํŽ˜์ด์ง€๋ฅผ presentํ•ด์•ผํ•˜๊ณ  ํƒœ๋ช…์„ ์œ ์ €์—๊ฒŒ ์ž…๋ ฅ๋ฐ›๋Š” ํŽ˜์ด์ง€๋Š” ์•ž์œผ๋กœ๊ฐ€๋ฉด ์˜จ๋ณด๋”ฉ์™„๋ฃŒํŽ˜์ด์ง€ ๋’ค๋กœ๊ฐ€๋ฉด ์ž„์‹ ์ฃผ์ฐจํŽ˜์ด์ง€๋ฅผ presentํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค

enum OnboardingPageType: Int, CaseIterable {
    case getPregnancy = 0
    case getFetalNickname = 1
}

enum OnbardingFlowType: Int {
    case toGetPregnacny
    case toFetalNickname
    case toLogin
    case toCompleteOnboarding
}

extension OnboardingPageType {
    var forward: OnbardingFlowType {
        switch self {
        case .getPregnancy:
            return .toFetalNickname
        case .getFetalNickname:
            return .toCompleteOnboarding
        }
    }

    var back: OnbardingFlowType {
        switch self {
        case .getPregnancy:
            return .toLogin
        case .getFetalNickname:
            return .toGetPregnacny
        }
    }
}