기본 ViewController의 생명주기
- viewDidLoad
- viewWillAppear
- viewDidAppear
- viewWillDisappear
- viewDidDisappear
가 존재한다.
생명주기는 크게 Navigation Controller를 이용한 Push 와 Present 방식으로 나눠진다.
Push
A ViewController에서 B ViewController를 호출(즉, Push)한다고 하자.
- A에서 B를 호출 시 B(viewDidLoad)
- A(viewWillDisappear)
- B(viewwillAppear)
- A(viewDidDisappear)
- B(viewDidAppear)
B ViewController에서 pop한다고 하자
- B(viewWillDisAppear)
- A(viewWillAppear)
- B(viewDidDisappear)
- A(viewDidAppear)
Present
똑같이 A ViewController에서 B ViewController를 호출(즉, Present)한다고 하자.
- B(viewDidLoad)
- A(viewWillDisappear)
- B(viewWillAppear)
- B(viewDidAppear)
- A(viewDidDisappear)
B ViewController에서 dismiss한다고 하자
- B(viewWillDisappear)
- A(viewWillAppear)
- A(viewDidAppear)
- B(viewDidDisappear)
여기서 주의할 A의 viewDidLoad가 불리지 않았다!
또한 주의할 점은 Over 방식은 또 다르게 동작한다는 것이다. Over가 붙으면 현재 화면 위에 새로운 VC를 올린다고 생각하면 된다. 따라서 현재 화면은 사라지거나, 나타나거나 하지 않고 계속 상태가 유지되며 위에 올라오는 화면만 생명주기를 수행하게 된다.
'iOS' 카테고리의 다른 글
[iOS] NotificationCenter vs Delegate (0) | 2021.01.19 |
---|---|
[iOS] Build input file cannot be found: '...../Info.plist' 오류 (0) | 2021.01.14 |
[iOS] ViewController 화면 전환 (Segue) (0) | 2021.01.12 |
[iOS] StoryBoard vs Code(Programmatically) (0) | 2021.01.12 |
[iOS] TabBar vs TabBarController (0) | 2021.01.11 |