프로젝트를 만들면 기본적으로 Main이라는 storyBoard가 제공된다.
위에 화면에 보면 →화살표 모양이 보이는데 이건 앱에 첫 시작점을 의미한다.
하지만 코드로 Initial ViewController를 구현하려고 합니다.
따라서 Main.stroyBoard는 삭제합니다.
우선 ViewController를 만들어 줍니다. 저는 MainViewController.swift로 만들었습니다.
//
// MainViewController.swift
// NewsApp
//
// Created by 장일규 on 2022/01/08.
//
import UIKit
class MainViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
}
SceneDelegate.swift로 가서 오늘의 주제인 앱 실행 시 보여지는 Initial ViewController UI를 코드로 구현해보려고 합니다.
SceneDelegate는 화면의 라이프 사이클을 관리합니다.
func scene(
_ scene: UIScene,
willConnectTo session: UISceneSession,
options connectionOptions: UIScene.ConnectionOptions
) {
guard let _ = (scene as? UIWindowScene) else { return }
}
UISceneSession lifecycle에서 가장 먼저 호출되는 메소드인 scene에서 UIWindow 객체를 생성하고, window의 rootViewController를 설정합니다.
위에서 삭제한 Main.storyboard를 대체하는 rootViewController에 설정이 완료되었으니 Run해봅시다.
2022-01-08 18:14:25.267416+0900 NewsApp[5033:77685]
*** Terminating app due to uncaught exception
'NSInvalidArgumentException',
reason: 'Could not find a storyboard named 'Main' in bundle NSBundle
😱???? 크래시 발생 ????😱
아까 삭제한 'Main' 이름의 스토리보드를 찾을 수 없습니다.라는 에러 로그를 뱉습니다..
자~~~ 그럼 Run 해봅시다.
시뮬레이터 실행 시 검은 화면이 나오면 정상적으로 실행이 된 것입니다.