앱구현 과제를 할 때 구현하기에 급급해 코드베이스로 적용하는 방법에 대해 이렇게 하는구나 정도로만 알아두고 넘어갔었기 때문에 한 번 정리를 해두고 넘어가야겠다는 생각이들었다.(초기세팅)
스토리보드 ➡️ 코드베이스 적용 절차
SceneDelegate 설정

코드베이스로 적용할 경우 SceneDelegate.swift 파일에서 scene 부분을 설정해줘야한다.
var window: UIWindow?는 앱에 반드시 필요한 root view이다. 이 뷰에 다른 뷰들을 쌓게된다.
class SceneDelegate: UIResponder, UIWindowSceneDelegate {
var window: UIWindow? //앱에 반드시 필요한 근본 뷰. 이 뷰에 뷰들이 쌓이기 시작.
func scene(_ scene: UIScene, willConnectTo session: UISceneSession,
options connectionOptions: UIScene.ConnectionOptions) {
guard let windowScene = (scene as? UIWindowScene) else { return }
let window = UIWindow(windowScene: windowScene)
window.rootViewController = ViewController()
window.makeKeyAndVisible()
self.window = window
}
...이하생략
UIWindowScene객체는 앱 UI 인스턴스를 관리하며, scene에 포함된 하나 이상의 window를 관리한다.

scene객체는 디바이스의 windows의 표시를 관리하고, 사용자가 상호작용하는 scene의 생명주기를 관리한다.
guard let windowScene = (scene as? UIWindowScene) else { return }
위 코드는 scene객체를 UIWindowScene으로 타입 캐스팅
UI에 배경을 제공하고, Event를 View에 전달하는 객체
현재 창을 화면에 표시하고, 동일 level 또는 더 낮은 수준의 창들 앞에 배치하며, 키 윈도우로 만든다.
func scene(_ scene: UIScene, willConnectTo session: UISceneSession,
options connectionOptions: UIScene.ConnectionOptions) {
//1. scene객체 생성
guard let windowScene = (scene as? UIWindowScene) else { return }
//2. UIWindow객체 생성(scene객체를 매개변수로 사용)
let window = UIWindow(windowScene: windowScene)
//3. UIWindow객체의 rootViewController로 ViewController를 설정
window.rootViewController = ViewController()
//4. UIWindow객체를 화면에 표시한다.
window.makeKeyAndVisible()
self.window = window
}