APPLE/Swift

[ Swift ] ViewController Life Cycle

pandada 2023. 1. 26. 16:44
반응형

이번에는 ViewController Life Cycle에 대해서 알아보려고 한다.

보통 App을 만들때에 단일 스크린 위에서 여러개의 ViewController들로 화면 전환이 가능한 App을 만든다.

App이 복잡해질 수록 Controller들을 잘 관리해주어야한다.

또한 알맞은 타이밍에 내가 원하는 코드를 작성해주는 것이 중요하다.

이를 위해서 ViewController Life Cycle을 이해해야한다.

 

UIViewController 객체에는 View 객체를 관리하는 메서드들이 정의되어 있다.

이 메서드들은 각자 메서드들이 호출되어야하는 타이밍일때에 IOS의 시스템에 의해 자동으로 호출된다.

UIViewController의 하위 클래스를 생성할 때에 Life Cycle 상황에 맞게 추가하여 사용할 수 있다.

 

Apple 참조

좌측 이미지는 View가 보여지는 4가지 상황에 대한 이미지이다. 해당 이미지는 Apple 의 개발문서에서 가지고왔다.

  • Appearing : View가 화면에 나타나는 중
  • Appeared : View가 화면에 나타나는게 완료 된 상태
  • Disappearing : View가 화면에서 사라지는 중
  • Disappreared : View가 화면에서 사라진 상태

UIViewController는 View가 보여진 상태에 따라 시스템에 호출하는 Life Cycle 메소드가 다르다.

각각의 시점에 어떤 메소드가 호출 되는지 내용을 확인해보자. 우측의 이미지는 각각의 상태에 대한 메소드 호출에 대한 내용이다.

 

viewDidLoad()

  • View Controller의 모든 View들이 메모리에 로드됐을 때에 호출
  • 메모리에 처음 로드될 때 한 번만 호출
  • 보통 딱 한번 호출될 행위들을 이 메소드 안에 정의
  • View와 관련된 추가적인 초기화 작업, 네트워크 호출같은 1회성 작업

viewWillAppear()

  • View가 View 계층에 추가되고, 화면에 보이기 직전에 매 번 호출
  • 다른 View로 이동했다가 돌아오면 재호출
  • View와 관련된 추가적인 초기화 작업

viewWillLayoutSubviews()

  • 뷰 컨트롤러의 뷰가 레이아웃이나 경계에서 변경되면 호출한다.
  • ViewController의 수명 동안 여러 번 호출될 수 있다.
  • ViewController는 View가 하위 View를 배치하기 전에 viewWillLayoutSubviews()를 재정의 하여 변경할 수 있다.

viewDidLayoutSubviews()

  • View가 자동 레이아웃 계산으로 완료될 때마다 호출된다.
  • View가 업데이트, 회전, 변경되거나 경계가 변경되는 경우에도 호출
  • View가 업데이트된 후 일부 구현을 추가하기 위해 장치의 방향이 변경될 때에 중요하게 쓰이는 기능

viewDidAppear()

  • ViewController의 View가 View 계층에 추가된 후 호출된다.
  • View를 나타낼 때 필요한 추가 작업
  • 애니메이션을 시작하는 작업

viewWillDisappear()

  • View Controller의 View가 View 계층에서 사라지기 전에 호출
  • View가 생성된 뒤 작업한 내용을 되돌리는 작업
  • 최종적으로 데이터를 저장하는 작업

viewDidDisappear()

  • ViewController의 View가 View 계층에서 사라진 뒤에 호출
  • View가 사라지는 것과 관련된 추가 작업

이렇게 ViewController의 LifeCycle은 View의 상태 변화에 따라 시스템에 의해 특정 메서드들을 호출한다.

따라서 구현하고자 하는 기능들을 적절한 상황에 맞춰서 해당 메서드들 안에 코드를 작성하여 사용하면 된다.

반응형

'APPLE > Swift' 카테고리의 다른 글

[ Swift ] 화면 전환 구현 2  (0) 2022.12.06
[ Swift ] 화면 전환 구현 1  (0) 2022.11.25
[ Swift ] UINavigationController  (0) 2022.10.12
[ Swift ] 간단한 랜덤 속담 App  (0) 2022.10.05
[ Swift ] IBOulet & IBAction  (0) 2022.10.03