StoryBoard없이 코드로 Initial ViewController 구현하기

장일규·2022년 1월 8일
0

1. Project 생성

프로젝트를 만들면 기본적으로 Main이라는 storyBoard가 제공된다.
위에 화면에 보면 →화살표 모양이 보이는데 이건 앱에 첫 시작점을 의미한다.
하지만 코드로 Initial ViewController를 구현하려고 합니다.

따라서 Main.stroyBoard는 삭제합니다.

우선 ViewController를 만들어 줍니다. 저는 MainViewController.swift로 만들었습니다.

MainViewController

//
//  MainViewController.swift
//  NewsApp
//
//  Created by 장일규 on 2022/01/08.
//

import UIKit

class MainViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
    }
}

2. SceneDelegate 코드 수정

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' 이름의 스토리보드를 찾을 수 없습니다.라는 에러 로그를 뱉습니다..

3. Info.plist 수정

  1. Info.plist에서 Storyboard Name을 삭제한다.

  1. 프로젝트를 클릭하고 Main Interface에서 Main이라고 되어있는 부분을 지워줍니다.

자~~~ 그럼 Run 해봅시다.

시뮬레이터 실행 시 검은 화면이 나오면 정상적으로 실행이 된 것입니다.

0개의 댓글

관련 채용 정보