iOS Storyboard 없이 작업하기

이번에 iOS 13 이상으로 올라가면서 SceneDelegate가 추가되었다. 기존에는 AppDelegate에만 작업해주면 됐는데… Storyboard나 Xib는 너무 무겁고 협업하기에도 매우 불편하다. 이 포스트에서는 iOS 13이상에서 Storyboard를 제거하는 작업을 할 예정이다.

일단 프로젝트를 생성하고 Info.plist 에서 아래의 항목을 지운다.

Storyboard Name 항목을 지우면 된다.

그 다음 SceneDelegate.swift 의 파일을 아래와 같이 편집해주자

func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
    guard let scene = (scene as? UIWindowScene) else { return }
           
    window = UIWindow(windowScene: scene)

    let vc = ViewController()
    
    window?.rootViewController = vc
    window?.makeKeyAndVisible()
}

이제 실행해보면 잘 된다. 근데 아직 프로젝트에 Main.storyboard가 남아있다. 이것도 지워보자.

??? 지우고 실행했는데 오류가 난다. 오류 내용을 확인해보니 Bundle에서 Main.storyboard를 찾을 수 없다고 한다..

프로젝트를 선택하고 General -> Deployment info 에서 Main Interface를 공백으로 남겨주자

이제 잘된다 ㅎㅎ