// // OnboardingMain.swift // Reflect (iOS) // // Created by Trey Tartt on 1/20/22. // import SwiftUI struct OnboardingMain: View { @Environment(\.presentationMode) var presentationMode @State var onboardingData: OnboardingData @EnvironmentObject var iapManager: IAPManager @State private var currentPage: Int = 0 let updateBoardingDataClosure: ((OnboardingData) -> Void) var body: some View { TabView(selection: $currentPage) { // 1. Welcome screen OnboardingWelcome(onNext: nextPage) .tag(0) // 2. Which day to rate OnboardingDay(onboardingData: onboardingData, onNext: nextPage) .tag(1) // 3. Reminder time OnboardingTime(onboardingData: onboardingData, onNext: nextPage) .tag(2) // 4. Style customization OnboardingStyle(onboardingData: onboardingData, onNext: nextPage) .tag(3) // 5. Subscription benefits & completion OnboardingSubscription( onboardingData: onboardingData, completionClosure: { data in updateBoardingDataClosure(data) } ) .tag(4) } .ignoresSafeArea() .tabViewStyle(.page) .onAppear { setupAppearance() } .interactiveDismissDisabled() } private func nextPage() { withAnimation { currentPage += 1 } } func setupAppearance() { UIPageControl.appearance().currentPageIndicatorTintColor = .white UIPageControl.appearance().pageIndicatorTintColor = UIColor.white.withAlphaComponent(0.3) } } struct OnboardingMain_Previews: PreviewProvider { static var previews: some View { OnboardingMain( onboardingData: OnboardingData(), updateBoardingDataClosure: { _ in } ) .environmentObject(IAPManager()) } }