[iOS-UIKit] 스토리보드 -> 코드베이스 환경설정하는 방법

UIKit

TIL 21일 차 - 스토리보드 -> 코드베이스로 환경설정하기

코드베이스(Code-based)란?

스토리보드(XIB) 같은 인터페이스 빌더를 사용하지 않고, 코드로만 화면(UI)을 구성하는 방식

 

실무에서 코드베이스를 선호하는 이유!

1. Git 협업이 편함

- 머지 충돌 적음

2. 유지 보수가 쉬움

3. 재사용/구조화가 쉬움

- 모듈화

 

1. 스토리 보드 삭제

내비게이터 영역의 storyboard 파일을 Delete 하고 Move to Trash 한다.

 

2. info.plist에서 스토리보드 연결 끊기

네비게이터 영역의 Info.plist 선택하고 (Command+F)로 main 검색 후 [Key: Storyboard Name, Value: Main] 선택 후 백스페이스 눌러 삭제한다.

 

3.  Build Setting에서 Storyboard파일 삭제

프로젝트 파일에서 Targets 선택
Build Setting -> main 검색 -> UIKit Main Storyboard File Base Name 항목 삭제

프로젝트 파일에서 Target 선택 -> Build Setting -> main 검색(Command + F) -> UIKit Main Storyboard File Base Name 항목 백스페이스 눌러 삭제하기

 

4. SceneDelegate.swift 수정하기

수정 전 SceneDelegate 기존 코드
수정한 코드

 

// SceneDelegate는 '화면(Scene) 하나'의 생명주기를 관리하는 클래스
class SceneDelegate: UIResponder, UIWindowSceneDelegate {
	
    // 앱 화면을 담을 창(Window)
    // 이 window에 어떤 ViewController를 보여줄지 정함
    var window: UIWindow?

	// 화면(Scene)이 처음 생성될 때 호출되는 메서드
    func scene(_ scene: UIScene, 
    	willConnectTo session: UISceneSession, 
        options connectionOptions: UIScene.ConnectionOptions) 
        {
        
        // 전달받은 scene이 실제 화면을 표현하는 UIWindowScene인지 확인
        // 아니라면 더 이상 진행이 불가하므로 return
        guard let windowScene = (scene as? UIWindowScene) else { return }
        
        // UIWindow 생성
        // 이 window가 실제 iPhone 화면이라고 생각하면 됨
        let window = UIWindow(windowScene: windowScene)
        
        // 이 window의 첫 화면을 ViewController로 설정
        window.rootViewController = ViewController()
        
        // window를 화면에 보이게 해줌
        window.makeKeyAndVisible()
        
        // SceneDelegate가 이 window를 계속 가지고 있도록 저장
        self.window = window
    }

이렇게 SceneDelegate에서 UIWindow를 생성하고 rootViewController를 지정해 앱의 첫 화면을 코드로 설정해 주면 끝이다.

 

실행 후 컴파일 에러 없이 빌드가 된다면 정상적으로 스토리보드가 삭제되고 코드베이스로 UI를 작성할 수 있게 되었다.