UIViewController
클래스는 대부분의 뷰 콘트롤러가 공통으로 가지고 있는 동작을 정의한다. UIViewController의 인스턴스를 만들기보단 하위 클래스를 만들어 필요한 프로퍼티와 메서드를 정의해서 사용하면 된다.
- 데이터 변화를 뷰 콘텐츠에 업데이트
- 사용자와 뷰의 상호작용에 대한 응답
- 인터페이스의 레이아웃 관리와 뷰의 사이즈 조정
- 다른 컨트롤러(뷰 컨트롤러를 포함한)와 협력
뷰 컨트롤러는 뷰와 밀접한 관계를 가지고 있으며, 이벤트를 처리한다.
뷰의 시각적인 변경이 있을 때 뷰 컨트롤러는 자동적으로 자체 메서드를 호출하여 변화에 응답한다. viewWillAppear(_:)
로 뷰가 화면에 표시되도록 준비할 수 있고, viewWillDisappear(_:)
로 변경 사항이나 상태 정보를 뷰가 사라지기 전에 저장할 수 있다. 이외에도 메서드를 상황에 맞게 사용할 수 있다.
모든 will
콜백과 did
콜백이 쌍을 이루는 것은 아니다. 만약 will
메서드로 프로세스를 시작했다면 did
와 상응하는 will
메서드 모두에서 프로세스를 종료해야 한다.
viewWillAppear(_:)
: 뷰가 뷰 계층에 추가될 것을 뷰 컨트롤러에게 알림viewDidAppear(_:)
: 뷰가 뷰 계층에 추가되었음을 뷰 컨트롤러에게 알림viewWillDisappear(_:)
: 뷰가 뷰 계층에서 제거될 것을 뷰 컨트롤러에게 알림viewDidDisappear(_:)
: 뷰가 뷰 계층에서 제거되었음을 뷰 컨트롤러에게 알림뷰의 상태 메서드 관계
나타나기 전
viewWillAppear(_:)
--- 나타나는 중 ---> 나타남viewDidAppear(_:)
사라지기 전
viewWillDisappear(_:)
--- 사라지는 중 ---> 사라짐viewDidDisappear(_:)
뷰 컨트롤러가 메모리에 로드 된 후 호출되는 메서드
일반적으로 viewDidLoad()
를 통해 뷰에 대한 추가 초기화를 진행한다.