[iOS]ViewController의 생명주기
앱에 나타나는 하나의 화면은 하나의 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://zeddios.tistory.com/43 [ZeddiOS]