iOS
[iOS] 화면 전환시 ViewController의 생명주기
나무는tree
2021. 1. 12. 15:47
기본 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를 올린다고 생각하면 된다. 따라서 현재 화면은 사라지거나, 나타나거나 하지 않고 계속 상태가 유지되며 위에 올라오는 화면만 생명주기를 수행하게 된다.