본문 바로가기

Codes Travel/iOS Boost Course #2019

UIViewController 뷰의 상태변화 감지 메서드

 

안녕하세요 :)

iOS 개발자 리치(rich_iosdev)입니다.

 

공유해드릴 내용은 UIViewController 입니다.

 

UIViewController는 iOS 개발에서 반드시 알아야 하는 부분입니다.

 

1. View의 상태의 변화에 따라 호출되는 메서드와 순서

2. View의 레이아웃 변화에 따라 호출되는 메서드

 

위 2가지에 대해서 알아봤습니다.

 

먼저, View의 상태 변화에 따라 ViewController는 메서드를 호출하고 서브클래스들이 적절하게 대응 할 수 있도록 해줍니다.

 

Apple 공식 문서 이미지 참조

 

1. View의 상태의 변화에 따라 호출되는 메서드와 순서

 

**중요: 여기서 View 라는 표현은 ViewController의 View라고 생각하시면 됩니다.

 

viewDidLoad()

 

  • ViewController 의 View가 메모리에 로드되고 난 직후 호출되는 메서드
  • 처음 화면이 만들어질 때 한 번만 호출되는 메서드
  • View의 추가적인 초기화 작업을 하기 좋은 시점

 

viewWillAppear()

 

  • View가 화면에 나타나기 직전에 호출되는 메서드
  • 다른 ViewController로 이동했다가 다시 원래 ViewController로 돌아오는 경우 호출되는 메서드로 화면이 나타날 때마다 수행해야하는 작업을 하기 좋은 시점
  • View의 추가적인 초기화 작업을 하기 좋은 시점

viewDidAppear()

 

  • View가 화면에 나타난 직후에 호출되는 메서드
  • View를 나타내기 위한 추가적인 수행 작업을 하기 좋은 시점 (애니메이션)

viewWillDisappear()

 

  • View가 화면에서 사라지기 직전에 호출되는 메서드
  • View가 생성된 뒤 발생한 변화를 이전 상태로 되돌리는 작업을 수행하기 좋은 시점

viewDidDisappear()

 

  • View가 화면에서 사라진 직후에 호출되는 메서드
  • View를 숨기는 것과 관련된 추가적인 작업을 수행하기 좋은 시점
  • 수행 시간이 오래 걸리는 작업은 하지 않는 것이 좋음

2. View의 레이아웃 변화에 따라 호출되는 메서드

 

viewWillLayoutSubviews()

 

  • View가 subview의 layout을 변경하기 직전에 호출되는 메서드
  • View의 subview들의 layout을 변경하기 전에 수행할 작업을 구현하기 좋은 시점

viewDidLayoutSubviews()

 

  • View의 subview들의 layout이 변경된 직후 호출되는 메서드
  • View의 subview들의 layout을 변경 한 후 추가적으로 수행할 작업을 구현하기 좋은 시점

**중요: 해당 메서드들을 사용하기 위해서 아래 예시와 같이 반드시 override 키워드를 func 앞에 명시해 주고, super를 호출해줘야 합니다.

   override func viewDidLoad() {
        super.viewDidLoad()
        
   }

 

References

 

[부스트코스] iOS 프로그래밍

뷰의 상태변화 감지 메서드

https://www.edwith.org/boostcourse-ios/lecture/16858/

 

Zedd0202님의 블로그

iOS) View Controller의 생명주기 (Life-Cycle)

https://zeddios.tistory.com/43

 

끝까지 읽어주셔서 정말 감사합니다 :)

 

잘못된 내용이 있다면 꼭 댓글로 남겨주세요!

확인해서 바로 수정하도록 하겠습니다

'Codes Travel > iOS Boost Course #2019' 카테고리의 다른 글

Target-Action 디자인 패턴  (0) 2019.07.24
Singleton (싱글턴) 이란?  (0) 2019.07.24
Delegation?  (0) 2019.07.23
Modal 화면전환 기법 (Present & Dismiss)  (0) 2019.07.22
UINavigationController ?  (0) 2019.07.21