ViewController Life-Cycle

ViewController LifeCycle

init

스토리보드를 통해 뷰 컨트롤러를 생성할 경우 뷰 컨트롤러의 객체가 생성될 때 초기화 작업을 하는 메서드

공식문서에서는 self.init() 같은 방법으로 직접 호출하면 안 된다고 명시하고 있다. 추가적으로 뷰의 추가적인 초기화는 viewDidLoad() 메서드에서 수행하라고 한다. 오버 라이딩은 가능하다.

 

loadView

뷰 컨트롤러가 자신의 뷰, 그러니까 흔히 self.view처럼 접근하는 그 뷰 컨트롤러의 메인 뷰를 로드할 때 호출되는 메서드이다.  즉, 그 메인뷰를 생성하려고 호출하는 메서드이다. 그래서 이 메서드 안에서 새로운 뷰를 만들어서 반환해줘도 된다. 하나 스토리보드를 쓴다면 어차피 스토리보드에 있는 뷰를 가져와 사용하기 때문에 굳이 필요하지는 않다. Outlet, Action들이 생성되고 연결된다.

 

viewDidLoad

뷰가 모두 생성되고 메모리에 로드된 후에 호출되는 메서드이다. 뷰 컨트롤러에  뷰가 모두 생성됐으니 이제 하고싶은걸 해라 라는 뜻으로 이해하면 도움이 될 것이다. 보통 리소스를 초기화하거나 초기 화면을 구성할 경우 사용한다. 이 메서드는 화면이 생성될 때 딱 한 번만 실행된다. 그러므로 이 메서드에서 초기화 코드를 작성하면 된다.

 

viewWillAppear

뷰 컨트롤러에 뷰가 나타나기 직전 상황에 호출되는 메서드이다. viewDidLoad메서드와 비슷하다고 느낄 수 있으나 viewDidLoad의 경우는 view가 메모리에 로드되고난 후 한 번만 실행된다. 예를 들어 내비게이션 뷰 컨트롤러에서 화면을 이동하게 되면 뷰 컨트롤러를 전환할 때마다 viewWillAppear메서드는 호출되나 viewDidLoad메서드는 호출되지 않는다. 화면이 전환된 후 처리할 일이 있다면 이 메서드에 작성하면 된다.

 

viewDidAppear

뷰가 뷰 컨트롤러에 나타난 직후에 호출되는 메서드이다. 매개변수로 animated Boolean값을 전달 해 화면에 적용될 애니메이션을 나타낼 수 있다.

 

viewWillDisappear

뷰가 삭제되기 직전에 호출되는 함수이다. 뷰 컨트롤러에게 뷰가 사리질것이다라는것을 알려준다.

 

viewDidDisappear

뷰가 사라졌음을 뷰 컨트롤러에게 알려준다. 보통 뷰 컨트롤러가 화면에서 사라지고 나서 중단해야 할 작업이 있다면 이곳에 작성해주면 된다.

 

복사했습니다!