위의 그림은 UIViewContoroller의 생명주기를 나타낸 그림이다.
항상 느끼지만 작명은 매우 중요한 것 같다.
글만 읽어도 뷰컨트롤러의 생명 주기는 화면이 생겼다 없어지는 것이다.
Nib/ Xib는 미니 스토리보드의 역할은 한다. 이 미니스토리보드에서 객체가 생성될 때 호출되는 메서드다. 세그웨이 준비나 IBOutlet이 설정되기 이전이기 때문에 작업이 필요할 경우 여기보다는 viewDidLoad() 메서드에서 수행하는 것이 낫다.
그렇지만 UIView와 같은 View아이템의 경우 UIViewController가 아니기 때문에 viewDidLoad() 메서드가 없다. MVC 구조에서 View 역할을 하기 위한 코드는 awakeFromNib()에서 작업할 수 있다.
이제는 몸이 기억하는 뷰디드로드슈퍼뷰디드로드
viewDidLoad 메소드는 뷰의 로딩이 끝났을 때 자동적으로 호출된다.
그래서 대부분 초기 화면 설정과 구성하는 용도로 많이 쓰인다.
화면이 처음 만들어질 때 한 번만 실행되므로, 처음 한 번만 실행해야 하는 코드가 있을 때는 viewDidLoad에 작성해주면 된다.
화면이 처음 만들어질 때 한 번만 실행되므로,
처음 한 번만 실행해야 하는 초기화 코드가 있을 경우
이 메소드 내부에 작성하면 됩니다.
viewWillAppear는 컨트롤러에게 뷰가 나타날 것이라고 알리는 역할을 한다.
왜쓰는지 이해가 안 될 수 있지만, 예를 들면 달라질 것이다.
내가 만들고 있는 프로젝트를 예시로 들어보겠다.
view가 나타났다는 것을 컨트롤러에게 알려준다.
화면에 그려질 애니메이션도 실행해준다.
viewDidAppear는 뷰가 화면에 나타난 직후에 실행됩니다.
이 것을 제외하고 viewDidAppear와 viewWillAppear는 거의 같다.
viewWillDisAppear는 뷰가 사라지기 직전에 호출되는 함수다.
뷰가 삭제 되려고하고있는 것을 뷰 콘트롤러에 통지합니다.
viewDidDisAppear가 호출되면뷰 컨트롤러가 뷰가 제거되었음을 알려준다.
생명주기마다, 적절하게 코드를 작성해주면 매끄러운 코딩을 할 수 있을 것 같다.