뷰컨트롤러와 생명주기
뷰 컨트롤러(View Controller)
뷰 컨트롤러(View Controller)는 뷰를 제어하는 컨트롤러 객체로 View를 프로퍼티로 가지며, 데이터 변화의 응답에 따라 뷰를 업데이트 하고, 사용자 조작에 의한 이벤트를 처리하는 등의 역할을 한다.
보통 앱의 전체 스크린 영역을 차지하는 하나의 루트 뷰 마다 하나의 뷰 컨트롤러를 가지고, 해당 루트 뷰가 여러개의 서브 뷰를 가지는 방식으로 구성되며, 여러개의 뷰 컨트롤러가 모여 하나의 앱을 만든다.
뷰 컨트롤러 생명주기(Life Cycle)
각각의 뷰 컨트롤러는 자신이 관리하는 서브 뷰들을 관리하기 위한 몇 가지 메소드를 가지고 있는데, iOS는 서브 뷰가 화면에 보였다(appear), 사라지는(disappear) 등의 상태 변화에 따라 메시지를 받게 되는데,
-
viewDidLoad()
: 뷰 컨트롤러의 생명주기 중 한 번만 호출되는 메서드로, 뷰 컨트롤러의 하위 뷰가 메모리에 로딩이 완료 되었을 때 시스템에 의해 자동으로 호출된다. 스크린이 로드되었을 때 단 한 번 호출이 필요한 네트워크 호출이나, 뷰 컨트롤러에서 사용되는 객체를 초기화 하는데 유용하다. -
viewWillAppear()
: 뷰 컨트롤러의 뷰가 window의 뷰 계층으로 더해지기 직전(화면에 나타나기 직전)이나, 애니메이션이 구성되기 직전에 호출된다. 첫 화면이 띄워질때도 호출되지만 다른 뷰에서의 전환을 통해 다시 현재 뷰로 돌아올 때도 호출된다. 뷰가 화면에 나타나기 전 필요한 추가 작업(데이터의 업데이트를 수행하거나, 뷰를 조정하는 등)의 작업을 할 수 있다. -
viewDidAppear()
: 뷰가 화면에 나타난 직후에 호출되는 메서드로, 애니메이션을 시작하거나 네트워크에서 데이터 수집을 시작하기 좋은 타이밍이다. -
viewWillDisappear()
: 다음 뷰 컨트롤러로 전환되기 전, 뷰 컨트롤러의 뷰가 뷰 계층에서 제거되기 직전에 호출된다. 키보드를 감추거나, 이 뷰로 인해 변동된 상태를 저장하기 적합하다. -
viewDidDisappear()
: 뷰 컨트롤러의 뷰가 뷰 계층에서 제거된 직후, 화면에서 사라진 직후에 호출되므로 화면이 사라진 후에 멈춰야 하는 작업을 실행할 수 있다.
👩🏻💻 배우는 것을 즐기는 프론트엔드 개발자 입니다
부족한 블로그에 방문해 주셔서 감사합니다 🙇🏻♀️
in the process of becoming the best version of myself