ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Xcode Swift UIKit 프로젝트 스토리보드 없이 만드는 법
    공부/Swift(프로그래밍 언어) 2026. 1. 24. 01:43
    반응형

    다음은 Xcode에서 UIKit 프로젝트를 스토리보드 없이 생성·설정하는 표준적인 방법입니다. (iOS 13 이상, SceneDelegate 기준)

    1. 프로젝트 생성

    1. Xcode 실행 → Create a new Xcode project
    2. iOS → App
    3. 옵션 설정
      • Interface: Storyboard (일단 기본으로 생성)
      • Life Cycle: UIKit App Delegate
      • Language: Swift
    4. 프로젝트 생성

     

    2. Storyboard 제거

    1. Main.storyboard 파일 삭제
    2. 삭제 시 나오는 다이얼로그에서 Remove References 선택

     

    3. 프로젝트 설정에서 Main storyboard file base name 제거

    [Xcode 13 이하] Info.plist에서 다음 항목 제거
    [Xcode 13 부터] 프로젝트 설정 > TARGETS > Info 탭 에서 다음 항목 제거

    • Main storyboard file base name (UIMainStoryboardFile)

    남아 있으면 앱 실행 시 크래시가 발생합니다.

     

    4. SceneDelegate 수정 (iOS 13+)

    SceneDelegate.swift에서 scene(_:willConnectTo:)를 아래처럼 수정합니다.

    func scene(
      _ scene: UIScene,
      willConnectTo session: UISceneSession,
      options connectionOptions: UIScene.ConnectionOptions
    ) {
      guard let windowScene = scene as? UIWindowScene else { return }
    
      window = UIWindow(windowScene: windowScene)
      window?.rootViewController = ViewController()
      window?.makeKeyAndVisible()
    }
    • 새로운 UIWindow 오브젝트를 만들어 window에 할당하고
    • 임의의 뷰 컨트롤러 (여기서는 ViewController 클래스)를 메인 뷰 컨트롤러로 지정하고
    • 이 UIWindow를 “현재 앱에서 실제로 보이는 메인 창”으로 확정 (make key and visible)

     

    5. Info.plist의 Scene Configuration 변경

    Info.plist > Application Scene Manifest > Scene Configuration > Window Application Session Role > Item 0 을 찾습니다.

    Storyboard Name 키값을 삭제합니다.

     

    그리고 Delegate Class Name이 삭제되는 경우가 간혹 있으므로 아래 화면처럼 Configuration Name, Delegate Class Name이 존재하는지 확인하고, 없는 값이 있다면 추가합니다.


    6. 기본 ViewController 구현

    ViewController.swift 예시

    import UIKit
    
    final class ViewController: UIViewController {
    
      override func viewDidLoad() {
        super.viewDidLoad()
        view.backgroundColor = .systemBackground
        // 프로그래밍적으로 UI 및 기능 추가
      }
    }

     

    7. (선택) AppDelegate 확인

    기본적으로 수정할 것은 없으나, 아래 메서드(connectingSceneSession)가 존재해야 합니다.

    func application(
      _ application: UIApplication,
      configurationForConnecting connectingSceneSession: UISceneSession,
      options: UIScene.ConnectionOptions
    ) -> UISceneConfiguration {
      UISceneConfiguration(
        name: "Default Configuration",
        sessionRole: connectingSceneSession.role
      )
    }

     

    8. 실행 확인

    이제 앱을 실행하면 Storyboard 없이 코드 기반 UIKit 앱으로 정상 실행됩니다.

     

    추가 팁

    • 완전 코드 기반을 선호한다면
      • Auto Layout → NSLayoutConstraint 또는 SnapKit
      • 화면 전환 → UINavigationController를 root로 설정

    예) 내비게이션 컨트롤러를 메인(rootViewController)으로 설정

    window.rootViewController = UINavigationController(
      rootViewController: ViewController()
    )

     

    반응형
Designed by Tistory.