티스토리 뷰

Programming/IOS

IOS Beginner | storyboard 탈출

글그리 2020. 12. 17. 20:22

IOS 프로젝트를 생성할 때 swiftUI와 storyboard 중 하나의 인터페이스를 사용해서 만들 수 있다. swiftUI를 사용할 경우 코드와 canvas로 화면을 구성 하게 되지만 storyboard를 선택하면 GUI환경에서 UI 배치 작업을 할 수 있는 storyboard라는 파일이 생긴다. GUI 환경에서 작업하고 IBOutlet 같은 annotation으로 연결할 수 있지만 속도도 느리고, 화면도 작아서 맥북으로는 원활하게 작업할 수가 없다. 차라리 storyboard를 없애고 코드로 작업할 수 있도록 환경을 바꿔 보자.

먼저 main.storyboard를 삭제한다.

 

하지만 프로젝트는 아직 main.storyboard를 인터페이스로 알고 있기 때문에 프로젝트 속성으로 들어가서 인터페이스 항목을 지운다.

 

storyboard를 사용하지 않도록 비운다.

 

info.plist를 자세히 읽어보면 ApplicationSceneManifest라는 항목이 있는데 이 항목 아래에는 Default Configuration이라는 Application Session Role 이 정의되어 있다. 이 role은 SceneDelegate 라는 delegate class를 사용하고, main 이라는 storyboard를 사용한다고 정의되어 있는데, storyboard를 지웠으니까 storyboard name 항목도 지운다.

 

AppDelegate로 이동하면 앞에서 본 Default Configuration을 SceneConfiguration로 만들어서 사용하는 것을 볼 수 있다. storyboard를 사용할 때는 storyboard가 UIWindow를 만들고 root view controller도 GUI 환경에서 initial view controller로 설정해 주는 것으로 초기화 할 수 있었지만 이제 코드에서 직접 만들고 초기화 해야 한다.

 

SceneDelegate로 이동해서 window를 생성하고 초기화 한다.

 

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

 

이제 storyboard로 부터 자유로워 졌다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함