모든 view controller에서 공통되게 적용되는 행동을 정의해둔 class
상속받아서 custom class에 메서드와 프로퍼티를 추가해서 내가 원하는 동작을 구현할 수 있다.
각 View Controller는 뷰의 계층구조를 관리한다.
view
프로퍼티엔 root view
가 저장되어있다.
root view
- 최상위의 view.
- 다른 view들을 담는 container
- 사이즈와 위치는 parent viewController와 App의 window에 따라 결정된다.
(항상 디바이스 화면 전체를 채울 수 있는 크기를 유지)
window는 단, 하나의 root viewController만 참조한다. (?)
view
프로퍼티는 lazy property이다. loadView()
로 view
에 root view를 할당하고, 메모리에 로드한다. 같은 presentation 화면 전환 방식이지만, 어떻게 보여지느냐에 따라 view life cycle엔 차이가 있다.
결론부터 말하면,
Page sheet방식은 첫 화면의 view는 그대로 있다. 따라서 첫번째 뷰의 viewWillDisappear()
viewDidDisappear()
는 호출 되지 않는다.
Page sheet방식은 두번째 화면으로 전환하더라도, 첫 화면이 뒷 배경으로 보여진다. 따라서 첫화면으로 돌아와도 첫화면의 내용은 그대로이다.
반면에 Full Screen방식과 Navigation방식으로 전환하면 첫번째 view는 사라진다. viewWillDisappear()
viewDidDisappear()
가 호출된다.