뷰 컨트롤러는 앱 내부 구조의 기초입니다. 모든 앱에는 적어도 하나의 보기 컨트롤러가 있으며 대부분의 앱에는 여러 가지가 있습니다. 각 뷰 컨트롤러는 앱 사용자 인터페이스의 일부는 물론 해당 인터페이스와 기본 데이터 간의 상호 작용을 관리합니다. 뷰 컨트롤러는 또한 사용자 인터페이스의 다른 부분 간의 전환을 용이하게 합니다.
앱에서 매우 중요한 역할을 하기 때문에 뷰 컨트롤러는 거의 모든 작업의 중심에 있습니다. 이 UIViewController클래스는 보기를 관리하고, 이벤트를 처리하고, 한 보기 컨트롤러에서 다른 보기 컨트롤러로 전환하고, 앱의 다른 부분과 조정하기 위한 메서드와 속성을 정의합니다. 하위 클래스 UIViewController(또는 하위 클래스 중 하나)를 만들고 앱의 동작을 구현하는 데 필요한 사용자 지정 코드를 추가합니다.
뷰 컨트롤러의 역할은 뷰의 계층 구조를 관리하는 것이다.
뷰 컨트롤러는 루트뷰에 콘텐츠에 필요한것을 추가하고(뷰컨르롤러에는 루트뷰에 대한 참조가 있고) 각 뷰는 하위 뷰에 강력한 참조를 통해 구성이 됩니다.
뷰 컨트롤러는 뷰와 앱 데이터 사이 중개자 역할도 합니다.
UIViewController를 만들때 하위 클래스에서 데이터를 관리하는 필요한 모든 변수를 추가합니다. 그 연계 과정이 위와 같은 그림으로 표현됩니다.
위 생명주기 그림은 자주 활용하게 되는데
뷰 컨트롤러의 상황에 따라 로직을 수행하도록 할 수 있기 때문입니다
아래는 각 상황 용어에 대한 설명입니다
ViewDidLoad - 해당 뷰컨트롤러 클래스가 생성될 때(ViewWillAppear전에 실행) 실행됩니다. Low memory와같은 특별한 경우가 아니라면 딱 한번만 실행되기 때문에 초기화 할 때 사용 할 수 있습니다.
ViewWillAppear - 뷰 컨트롤러가 화면에 나타나기 직전에 실행됩니다. 뷰 컨트롤러가 나타나기 직전에 항상 실행되기 때문에 해당 뷰 컨트롤러가 나타나기 직전마다 일어나는 작업들을 여기에 배치 시킬 수 있습니다.
ViewDidAppear - 뷰 컨트롤러가 화면에 나타난 직후에 실행됩니다. 화면에 적용될 애니메이션을 그리거나 API로 부터 정보를 받아와 화면을 업데이트 할 때 이곳에 로직을 위치시키면 좋습니다. 왜냐하면 지나치게 빨리 애니메이션을 그리거나 API에서 정보를 받아와 뷰 컨트롤러를 업데이트 할 경우 화면에 반영되지 않습니다.
ViewWill/DidDisappear - 뷰 컨트롤러가 화면에 나타난 직전/직후에 실행됩니다.