iOS) View Life Cycle

seuhong·2022년 8월 25일
0

View Life Cycle

UIViewController는 생명주기를 갖고 있는데 화면이 보여졌다 사라졌다 하는 과정들을 생명주기라고 합니다.

이러한 생명주기는 View의 상태 변화(event)에 의해 ViewController가 특정 메소드들을 호출하면서 진행하게 됩니다.

  1. awakeFromNib()

    awakeFromNib은 화면과 화면이 연결된 시점에 호출되는 메소드

    ex) UICollectionView로 그림들이 로드될 때(awake) 호출되는 함수.

    but, 코드로 view를 만들었을 때 ( let vc = UIViewController()) 에는 호출되지 않는다.

  2. viewDidLoad()

    화면이 로드될 때 호출되는 메소드

    생명주기 중에서 단 한번만 호출되며, 호출된 이후에는viewController의 모든 view, outlet들이 메모리에 로드되어 있는 상태가 됩니다.
    그래서 ex)네트워크 호출 과 같이 딱 한번 호출될 행위들을 이 메소드 안에서 정의할 수 있고, 뷰의 추가적인 초기화 작업을 할 수 있습니다.

    주기적으로 데이터가 변경, 갱신되는 경우에는 다른 메소드에서 정의해주어야 합니다.

  1. viewWillAppear()

    화면이 나오기 직전에 호출되는 메소드

    이 메소드는 뷰가 뷰 계층에 추가되고, 화면에 보이기 직전에 매 번 호출 됩니다. 그래서 viewDidLoad()와 달리 화면전환을 통해 다른 뷰로 이동했다가 돌아오면 재호출됩니다.

    그래서 뷰를 보여주는 것과 관련된 일을 하기에 좋고, 애니메이션을 실행하거나 비디오, 사운드를 재생하기에 좋습니다.

    뷰가 생성되기 직전에 항상 실행이 되기 때문에 뷰가 나타나기 전에 실행해야 하는 작업들을 여기서 할 수 있습니다.

  2. viewDidAppear()

    화면이 나타났을 때 호출되는 메소드

    뷰가 뷰 계층에 추가되어 화면이 표시되면 호출되는 메서드입니다.

    즉, 뷰가 화면에 나타난 직후 실행되고 화면에 적용될 애니메이션을 그려줍니다. 이 과정에서 데이터를 받아서 화면에 뿌려주거나 애니메이션 등의 작업을 하는 로직을 위치시킬 수 있습니다.

  1. viewWillDisappear()

    뷰가 사라지기 직전에 호출되는 메소드

    이 메소드는 뷰가 뷰계층에서 제거되기 직전에 호출됩니다. 뷰는 아직 뷰 계층에 있는 상태입니다.

  2. viewDidDisappear()

    뷰가 사라졌을 때 호출되는 메소드

    viewDidDisappear()는 뷰가 뷰 계층에서 사라진 후 호출되는 메소드입니다.
    뷰가 뷰계층에서 완전히 사라졌기 때문에 뷰 컨트롤러와 관련된 멈추어야할 작업들을 이 메소드를 override하여 사용할 수 있습니다.

참고자료

profile
완씨의 개발기록

0개의 댓글