Sign In
Swift | 학습 내용 정리

[Swift - UIKit] UIViewController에서의 View life Cycle API

한결
UIViewController에서 View 객체를 로드하고 (그리고) 어떤 페이지로 전환되어 그 객체가 사라지는 과정을 관리하는 시스템을 내가 학습하기로는 View Life Cycle 이라고 한다. View 객체의 생명주기를 관리하는 UIViewController 클래스의 내장 오픈 메서드(API라고 부르겠다)는 여러가지가 있지만, 대표적으로 위 이미지의 5가지가 대표적일 것 같다.
viewWillAppear
viewIsAppearing
viewDidAppear
viewWillDisappear
viewDidDisappear
사실, API의 prefix에 붙은 키워드만 보더라도 View 객체가 어떤 상태일지에 따라 서로 다른 API가 동작한다는 것을 쉽게 유추해 볼 수 있을 것 같다. (will, -ing, did) 모달이나 페이지 전환에 따라 특정 View 객체가 어떤 생명 주기를 가지는지를 각 API에 print 구문으로 확인해봤다.
1.
XCode로 앱을 처음 빌드할 때.
UIController의 viewDidLoad가 가장 먼저 앱을 그리는 로직을 수행한다.
그리고 나서 순서대로 willAppear → isAppearing → didAppear API가 호출된다.
(prefix 만으로도 쉽게 유추가 가능하다.)
2.
버튼 액션으로 모달 페이지가 떠오를 때.
앱 화면 하단에서 떠오른 모달 페이지가 직전 View를 가리더라도, 해당 View 객체 생명 자체를 사라지게 하지 않는다.
즉, 이전 화면을 완전히 가리지 않는다면 해당 View는 생명선을 유지한다는 뜻이다. 해당 모달을 내리더라도 willAppear, isAppearing, didAppear API가 콘솔에 전혀 찍히지 않는다.
모달 페이지에서 특정 액션을 발생시켜서 뒤에 있는 View에 어떤 화면 전환이 필요하면, 그걸 처리하는 로딩 로직을 만들어야 할 것 같다.
3.
버튼 액션으로 페이지 자체가 전환될 때.
화면이 Push되어서 완전 새로운 화면이 이전 View를 가릴 경우, 해당 View 객체는 생명을 다한다.
순서대로 willDisAppear, didDisappear API가 호출된다.
즉, 화면이 전환될 경우는 화면이 꺼짐으로 발생하는 데이터 저장이나, 업데이트 로직이 해당 생명주기 API에서 처리되어야 할 것이다.
연결된 화면이 Push될 경우, 이전 View 객체는 생명을 다한다.
물론, 다시 화면으로 돌아오면 생명이 다시 붙는다.
Ha
Subscribe to 'hankyeol'
Subscribe to my site to be the first to receive notifications and emails about the latest updates, including new posts.
Join Slashpage and subscribe to 'hankyeol'!
Subscribe
👍