1. UserDefaults를 이용하여 첫 런치 판단하기

  1. infoPlist에서 앱 처음 런치할 때 스토리보드 설정하는 부분 지워준다.

  2. SceneDelegate.swift

    //willConnectTo
    guard let scene = (scene as? UIWindowScene) else { return }
            window = UIWindow(windowScene:  scene)
    
            //what viewController load
            var storyboard: UIStoryboard!
            var controller: UIViewController!
            
            if UserDefaults.standard.hasOnbarded {
                storyboard = UIStoryboard(name: "TabView", bundle: nil)
                controller = storyboard.instantiateViewController(withIdentifier: TabViewController.identifier) as! TabViewController
        
                
               
            } else {
                storyboard = UIStoryboard(name: "Onboarding", bundle: nil)
                controller = storyboard.instantiateViewController(withIdentifier: OnboardingViewController.identifier) as! OnboardingViewController
            }
            
            // 위의 VC를 rootVC로 설정
            window?.rootViewController = controller
            window?.makeKeyAndVisible()
    
  3. UserDefaults를 앱 전체에서 사용하기 용이하도록 Extension으로 관리

    // UserDefaults+Extension.swift
    
    extension UserDefaults {
        private enum UserDefaultsKeys: String {
            case hasOnboarded
        }
    
    var hasOnbarded: Bool {
            get { bool(forKey: UserDefaultsKeys.hasOnboarded.rawValue)}
            set { setValue(newValue, forKey: UserDefaultsKeys.hasOnboarded.rawValue)}
        }