UIViewController 객체에는 View 객체를 관리하는 메서드들이 정의되어 있음
이 메서드들은 각자 불러져야 할 타이밍일때 iOS 시스템에 의해 자동으로 호출됨
UIViewContoller 하위 클래스를 생성할때 UIViewController의 정의된 이 메서드들을 override하여
라이프사이클 상황에 맞게 적절한 로직들을 메서드에 추가할 수 있음
시스템이 어떤 메서드를 언제 호출해야 하는지를 먼저 이해해야 하고
그시점에 맞춰 UI에 변화나 데이터 변화를 잘 처리할 수 있음
뷰가 보여지는 상황 4가지
Appearing
뷰가 화면에 나타나는 중
Appeared
뷰가 화면에 나타나는게 완료된 상태
Disappearing
뷰가 화면에서 사라지는 중
Disappeared
뷰가 화면에서 사라진 상태
viewDidLoad()
- 뷰 컨트롤러의 모든 뷰들이 메모리에 로드되었을때 호출
- 메모리에 처음 로드될떄 한번만 호출
- 보통 딱 한번 호출될 행위들을 이메서드 안에 정의함
- 뷰와 관련된 추가적인 초기화 작업, 네트워크 호출
viewWillAppear()
- 뷰가 뷰 계층에서 추가되고, 화면에 보이기 직전에 매번 호출
- 다른 뷰로 이동했다가 돌아오면 재호출
- 뷰와 관련된 추가적인 초기화 작업
viewDidAppear()
- 뷰 컨트롤러의 뷰가 뷰계층에 추가된 후 호출됨
- 뷰를 나타낼때 필요한 추가 작업
- 애니메이션을 시작하는 작업
viewWillDisappear()
- 뷰 컨트롤러의 뷰가 뷰 계층에서 사라지기 전에 호출
- 뷰가 생성된 뒤 작업한 내용을 되돌리는 작업
- 최종적으로 데이터를 저장하는 작업
viewDidDisppear()
- 뷰 컨트롤러의 뷰가 뷰 계층에서 사라진 뒤에 호출
- 뷰가 사라지는 것과 관련된 추가 작업
각각 메서드들이 실행하는 시기를 파악하기 위해 print 문으로 찍어 보았다.
실행순서
ViewController -> CodePresentViewController -> dismiss ->ViewController -> CodeNavigationViewController
-> pop -> ViewController
결과
ViewController viewDidLoad: 뷰가 로드 되었다.
ViewController viewWillAppear: 뷰가 나타날 것이다.
ViewControlelr viewDidAppear: 뷰가 나타났다.
--------------------------------------------------------------------------------------------------
CodePresentViewController viewDidLoad: 뷰가 로드 되었다.
ViewContoller viewWillDisappear: 뷰가 사라질 것이다.
CodePresentViewController viewWillAppear: 뷰가 나타날 것이다.
CodePresentViewController viewDidAppear: 뷰가 나타났다.
ViewController viewDidDisappear: 뷰가 사라졌다.
--------------------------------------------------------------------------------------------------
CodePresentViewController viewWillDisappear: 뷰가 사라질 것이다.
ViewController viewWillAppear: 뷰가 나타날 것이다.
ViewControlelr viewDidAppear: 뷰가 나타났다.
CodePresentViewController viewDidDisappear: 뷰가 사라졌다.
--------------------------------------------------------------------------------------------------
CodeNavigationViewController viewDidLoad: 뷰가 로드 되었다.
ViewContoller viewWillDisappear: 뷰가 사라질 것이다.
CodeNavigationViewController viewWillAppear: 뷰가 나타날 것이다.
ViewController viewDidDisappear: 뷰가 사라졌다.
CodeNavigationViewController viewDidAppear: 뷰가 나타났다.
--------------------------------------------------------------------------------------------------
CodeNavigationViewController viewWillDisappear: 뷰가 사라질 것이다.
ViewController viewWillAppear: 뷰가 나타날 것이다.
CodeNavigationViewController viewDidDisappear: 뷰가 사라졌다.
ViewControlelr viewDidAppear: 뷰가 나타났다.
'iOS랑 친해지기' 카테고리의 다른 글
[iOS] 일기장 만들기 1/8 (Swift) (0) | 2022.10.19 |
---|---|
[iOS] UICollectionView 파헤치기 (0) | 2022.10.13 |
[iOS] UITabBar / UITabBarItem / UITabBarViewController (0) | 2022.10.13 |
[iOS] TableView 메서드 정리 (Swift) (0) | 2022.10.06 |
[iOS] 화면전환하는 방법 (ContentViewController/ContainerViewController/present/popViewController/pushViewController/Segue) (0) | 2022.09.29 |