기본 ViewController의 생명주기

  1. viewDidLoad
  2. viewWillAppear
  3. viewDidAppear
  4. viewWillDisappear
  5. viewDidDisappear

가 존재한다.

 

생명주기는 크게 Navigation Controller를 이용한 Push 와 Present 방식으로 나눠진다.

 

Push

A ViewController에서 B ViewController를 호출(즉, Push)한다고 하자.

  1. A에서 B를 호출 시 B(viewDidLoad)
  2. A(viewWillDisappear)
  3. B(viewwillAppear)
  4. A(viewDidDisappear)
  5. B(viewDidAppear)

B ViewController에서 pop한다고 하자

  1. B(viewWillDisAppear)
  2. A(viewWillAppear)
  3. B(viewDidDisappear)
  4. A(viewDidAppear)

Present

똑같이 A ViewController에서 B ViewController를 호출(즉, Present)한다고 하자.

  1. B(viewDidLoad)
  2. A(viewWillDisappear)
  3. B(viewWillAppear)
  4. B(viewDidAppear)
  5. A(viewDidDisappear)

B ViewController에서 dismiss한다고 하자

  1. B(viewWillDisappear)
  2. A(viewWillAppear)
  3. A(viewDidAppear)
  4. B(viewDidDisappear)

여기서 주의할 A의 viewDidLoad가 불리지 않았다!

또한 주의할 점은 Over 방식은 또 다르게 동작한다는 것이다. Over가 붙으면 현재 화면 위에 새로운 VC를 올린다고 생각하면 된다. 따라서 현재 화면은 사라지거나, 나타나거나 하지 않고 계속 상태가 유지되며 위에 올라오는 화면만 생명주기를 수행하게 된다.

 

 

 

+ Recent posts