
*** 복잡한 설정 없이 간단히 작성 하였음.
참고. MVVM-C 등의 패턴 사용시 진입부 수정 필요
프로젝트 생성

설정 진행방법 (순서는 상관X)
1. 프로젝트파일의 Main Interface부분 삭제, 스토리보드 삭제, 런치스크린 삭제(선택)
(삭제전)

(삭제후)

2. info.plist의 스토리보드 네임 삭제
(삭제전)

(삭제후)

3. SceneDelegate에서 루트뷰 설정
아무런 설정이 안된 상태 - 자동생성되는 라이프사이클에 관련된 메소드는 삭제함. 안지워도 무관

(루트뷰 설정)
아래의 코드중 navigation으로 시작할것인지 present로 시작할것 인지에 따라 설정 하면 될것 같습니다.
UIWindowScene으로 Scene를 생성 후 시작되는 window(UIWindow)에 넣어주고, root뷰 생성 후 동일하게 window에 추가 후 화면 실행하는 코드 입니다.
//NavigationViewController 형태로 시작할때
guard let windowScene = (scene as? UIWindowScene) else { return }
window = UIWindow(frame: windowScene.coordinateSpace.bounds)
window?.windowScene = windowScene
let rootVC = ViewController()
let introNavigationVC = UINavigationController(rootViewController: rootVC)
self.window?.rootViewController = introNavigationVC
window?.makeKeyAndVisible()
// present, dismiss 형태로 시작할때
guard let windowScene = (scene as? UIWindowScene) else { return }
window = UIWindow(frame: windowScene.coordinateSpace.bounds)
window?.windowScene = windowScene
window?.rootViewController = ViewController()
window?.makeKeyAndVisible()

4. 완료 빌드 테스트
class ViewController: UIViewController {
let testView = UIView()
override func viewDidLoad() {
super.viewDidLoad()
testView.backgroundColor = .red
testView.frame = CGRect(x: 50, y: 50, width: 150, height: 150)
view.addSubview(testView)
}
}

(빌드 완료 디바이스 화면)

추가 ) 2024.05.01
Xcode 15 버전 이상부터 파일 구조가 바뀌어서 storyboard Name 삭제시 프로젝트으 buildSetting 에서 main 검색해서 삭제하면 됨.
Share article