Overview
Scene에는 하나의 Window 객체와 그 내부에 있는 여러 View 객체로 이뤄진다.
Window -> 보이지 않는 최상위 레벨의 Container, Event를 Views들에 라우팅 한다. 수명이 길다
View -> 보이는 실제 컨텐츠들. ex) 텍스트, 이미지 등, 보통 Window내에서 자주 바뀐다.
UIKit은 이런 Views를 쉽게 관리하기 위해 ViewControllers를 제공한다.
ViewController란 View의 집합체를 관리하는 역할을 한다.
Window에는 최상위 루트 ViewController가 존재하고, 다른 ViewConotroller에 있는 View 집합을 보여주고 싶다면,
ViewController를 present 하거나 dismiss 하면 된다.
이처럼, ViewController는 UI를 구현하는데 중요한 역할을 한다.
Define View Controllers for Each Unique Page of Content
앱을 디자인할 때, 먼저 각 페이지를 나눈다.
여기서는 전체적인 구조와 각 페이지의 모양만 신경쓴다. 내부에 어떤 데이터가 들어갈지는 이후에 고려하자.
이 각 페이지에 상응하는 ViewController를 정의한다. 모든 ViewController는 다음 과정을 수행해야 한다.
- View에 Data를 채운다. Data가 바뀌면 View를 업데이트 한다.
- Data가 바뀌면 Data Model에 알린다.
- 현재 환경에 맞게 size, position, visibility of views를 조정한다.
- 다른 페이지로(ViewController) 전환할 수 있게 한다.
Choose the Navigation Model for Your Content
여러 화면을 관리하기 쉽게 하기 위해 UIKit은 Container View Controller를 제공한다.
Container View Controller는 특수한 타입의 View Controller로, Child View Controllers를 관리하는 VC이다.
일반적인 Navigation 모델을 구현한다면, UIKit에서 제공하는 Container View Controller를 사용하자.
(물론, Custom Container View Controller도 만들 수 있다.)
UIKit에서 제공하는 Container View Controller에는 다음 4가지가 있다.
이 Container View Controllers를 결합해서 사용할 수도 있다.
가령, Split-view interface의 left pane(혹은 Primary pane이라고도 함)에 Navigation interface를 넣는 경우가 대표적이다.
Assign a Root View Controller to Each Window
Window에 Root View Controller를 할당하자.
Scene-based app에서 Storyboard를 사용한다면, 기본 스토리보드 파일의 Initial View Controller가 루트 VC이다.
Window를 Storyboard 없이 programmatically로 만든다면, window.rootViewController에 VC를 넣으면 된다.
[iOS] Storyboard 없이 코드로 UIWindow.rootViewController 설정하기
Reference
'Development > iOS' 카테고리의 다른 글
[iOS] Alamofire (feat. URLSession) (0) | 2022.05.19 |
---|---|
[iOS] Debounce (0) | 2022.05.18 |
[iOS] GCD란? (0) | 2022.05.13 |
[iOS] AutoLayout (0) | 2022.03.17 |
[iOS] iOS의 View 체계 (1) | 2022.03.15 |