study
- | 스토리 보드 | 코드베이스 |
---|---|---|
장점 | - WYSIWYG 결과물에 관해 예측하기 쉬움 - 속성확인가능 - 소스코드를 일일이 기억하지 않아도 됨 | - 따로 무거워지지 않음 - Code만 보이면 모니터 크기는 그렇게 중요하지 않음 - 상대적으로 Diff를 알아보기 쉬움 - Conflict발생 가능성이 상대적으로 낮음 |
단점 | - 무거움 - 링크가 끊어질시 확인이 어려움 - 모니터가 작으면 짜증유발... - 이전과 달라진점을 찾기 어려울 수 있음 - conflict 나면 고치기 빡셈 | - 해당 Component의 속성을 어느정도 숙지하고 있어야함 -> Document를 자주 봅시다!(Cmd + Shift + 0) - Source Code이기 때문에 어떤 화면이 만들어질지 알아보기 힘듬 - Code가 상당히 길어짐 |
기존에 Main StoryBoard로 UI가 시작되게 설정되어있는걸 모두 끊어준다.
Main storyboard file base name
속성 제거이렇게 Storyboard로 어플리케이션을 실행하겠다는 내용을 모두 제거하면 아무 기능없는 화면이 정상적으로 실행 된다.
어플리케이션이 시작하면서 화면을 어느 Scene에서 시작할지, 즉 Storyboard에서 지정해주던 start entry point를 설정해야한다. 물론 코드로.
//SceneDelegate.swift
class SceneDelegate: UIResponder, UIWindowSceneDelegate {
var window: UIWindow?
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
guard let _ = (scene as? UIWindowScene) else { return }
}
func sceneDidDisconnect(_ scene: UIScene) {}
func sceneDidBecomeActive(_ scene: UIScene) {}
func sceneWillResignActive(_ scene: UIScene) {}
func sceneWillEnterForeground(_ scene: UIScene) {}
func sceneDidEnterBackground(_ scene: UIScene) {}
}
여기서 scene()
메서드를 통해 시작하고자 하는 뷰 컨트롤러를 인스턴스화하여 화면에 제공할 것이다. UINavigationCotroller
는 바로 사용하였으며MainViewController
는 구현을 직접 해준다.
//SceneDelegate.swift -> class(SceneDelegate) 내부
func scene(_ scene: UIScene,
willConnectTo session: UISceneSession,
options connectionOptions: UIScene.ConnectionOptions)
{
guard let windowScene = (scene as? UIWindowScene) else { return }
let window = UIWindow(windowScene: windowScene)
let mainViewController = MainViewController()
let navigationController = UINavigationController(rootViewController: mainViewController)
window.rootViewController = navigationController
window.makeKeyAndVisible()
}
이제 어플리케이션은 우리가 직접 생성한 MainViewController로 시작할 것이다. 시작하는것을 확인하기 위해 MainViewController의 view 배경으로 확인해보았다.
//MainViewController.swift
class MainViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
self.view.backgroundColor = .red
}
}
결과로 다음과 같이 깔끔하게 나오는것을 볼 수 있따.
이정우 개발자님 seesion
Apple developer document - Scene()
엘림 블로그
Apple developer Document - makeKeyAndVisible()