부스트코스 “iOS 프로그래밍” 요약정리 - 2. 회원가입 화면 구현 #3

Updated:




#3. 뷰의 상태변화 감지

3.1. 뷰의 상태변화 감지 메서드

뷰가 화면에 보여지는 상태나 레이아웃에 변화가 생기면 뷰 컨트롤러는 여러 메서드로 서브클래스가 적절한 대응은 할 수 있게 한다.

뷰의 상태 변화 메서드

뷰가 화면에 보이는 상태가 변화할때 호출되는 메서드

Valid State Transitions

  • viewDidLoad()
    • 뷰 계층이 메모리에 로드된 직후 호출됨
    • 뷰의 추가적인 초기화 작업을 하기 좋음
    • 메모리에 처음 로딩 될때 한번만 호출되고, 메모리 경고로 뷰가 사라지지 않는 이상 다시 호출 되지 않음
  • viewWillApear()
    • 뷰가 뷰 계층에 추가되고 화면이 표시되기 직전에 호출됨
    • 뷰의 추가적인 초기화 작업하기 좋음
    • 다른 뷰로 갔다가 오면 재호출 되므로, 화면이 나타날때마다 수행해야하는 작업을 하기 좋음
  • viewDidApear()
    • 뷰가 뷰 계층에 추가되어 화면이 표시되면 호출됨
    • 뷰를 나타내는 것과 관련된 추가적인 작업을 하기 좋음
  • viewWillDisappear()
    • 뷰가 뷰 계층에서 사라지기 직전에 호출됨
    • 뷰가 생성된 뒤 발생한 변화를 이전상태로 되돌리기 좋음
  • viewDidDisappear()
    • 뷰가 뷰 계층에서 사라진 후 호출되는 메서드
    • 뷰를 숨기는 것과 관련된 추가적인 작업을 하기 좋음
    • 시간이 오래걸리는 작업은 안하는게 좋음

뷰의 레이아웃 변화 메서드

뷰가 생성된 후 바운드, 위치 등 레이아웃 변화가 발생했을 때 호출되는 메서드

  • viewWillLayoutSubviews()
    • 뷰가 서브뷰의 레이아웃을 변경하기 직전에 호출됨
    • 서브뷰의 레이아웃을 변경하기 전에 수행할 작업을 하기 좋음
  • viewDidLayoutSubviews()
    • 서브뷰의 레이아웃이 변경된 후 호출됨
    • 서브뷰의 레이아웃을 변경한 후 추가적인 작업을 하기 좋음

메서드 사용하기

override func viewDidLoad() {
    super.viewDidLoad()
    // view가 메모리에 적재된 시점에서 필요한 코드 작성
}

참고 링크




3.2. 직접 확인해보기

  1. 이전 프로젝트에서 이어짐
  2. ViewController에 상태변화 감지 메서드 추가
  3. SecondViewcontroller에 상태변화 감지 메서드 추가
  4. 실행해서 확인 - 모달, 내비게이션 둘 다 같음

Leave a comment