카테고리 없음

[iOS]ViewController의 생명주기

0lynny 2022. 4. 25. 20:13

앱에 나타나는 하나의 화면은 하나의 ViewController를 가지고, 뷰 컨트롤러는 하나의 루트 뷰를 관리하며, 그 자체에는 임의의 수의 하위 뷰가 포함될 수 있습니다. 이러한 뷰컨트롤러는 생명주기를 가지고 있습니다.  이때의 생명주기는 화면이 보여졌다가 사라지는 주기를 말합니다. 아래 이미지의 각 메소드를 override하여 각 타이밍에 맞게 원하는 작업을 수행할 수 있습니다.

 

뷰컨트롤러의 생명주기는 다음과 같습니다!

 

 

 

 

1. loadView

컨트롤러가 관리하는 뷰를 만듭니다.

뷰 컨트롤러에 연결된 nib 파일이 있는 경우 이 메서드는 Nib 파일에서 뷰를 로드합니다. 

**이 메소드는 직접 호출 불가!

 

2. viewDidLoad

: 뷰의 컨트롤러가 메모리에 로드되고 난 후에 호출됩니다.

이 메소드는 뷰가 로딩이 되면 시스템에 의해 자동으로 호출되기 때문에 일반적으로 리소스를 초기화하거나 초기 화면을 구성하는 용도로 주로 사용합니다. View Controller 생에 딱 한번 호출되기 때문에 한 번만 있을 행위에 대해서는 이 메소드 안에 정의 해주어야 한다. 화면이 처음 만들어질 때 한 번만 실행되므로처음 한 번만 실행해야 하는 초기화 코드가 있을 경우  이 메소드 내부에 작성하면 됩니다. 


3. viewWillAppear

: 뷰 컨트롤러의 화면이 올라오고 난 후 뷰가 화면에 나타나기 직전에 호출이 됩니다.  
즉 뷰가 로드 된 이후, 눈에 보이기 전에 컨트롤러에게 알리는 역할을 합니다. 다른 뷰로 이동했다가 되돌아올때 재 호출되는 매소드로 화면이 나타날 때 마다 수행해야하는 작업을 정의해주면 됩니다. 

** 처음 어플리케이션이 수행되고 첫 화면이 띄워질때 호출되는 것은 viewDidLoad()와 동일하지만, 화면 전환을 통해 다시 현재의 화면으로 돌아올 때 viewDidLoad가 아닌 viewWillAppear가 호출된다.

 

4. viewDidAppear

: view가 데이터와 함께 완전히 화면에 나타난 후 호출됩니다.

: 화면에 애니메이션을 그리거나 API 통신 결과를 화면에 업데이트 하는 등의 작업을 정의해주면 됩니다.

5. viewWillDisappear

: 다음 View Controller 화면이 전환하기 전이나 View Controller 가 사라지기 직전에 호출됩니다.

: 다른 화면으로 넘어가기 직전 또는 완전히 사라지기 전에 실행해야 하는 작업을 정의해주면 됩니다.

 

6. viewDidDisAppear

View Controller들이 화면에서 사라지고 나서 호출됩니다. 

화면이 사라지고 나서 필요 없어지는 (멈춰야하는) 작업들을 여기서 정의해주면 됩니다. 

 

 

출처

https://subscription.packtpub.com/book/application_development/9781783550814/6/ch06lvl1sec60/uiviewcontroller-lifecycle-methods

https://zeddios.tistory.com/43 [ZeddiOS]