728x90
학습 목표
- UIViewController LifeCycle을 공부한다.
- UIViewController가 사라지고, 띄워질 때 어떤 메소드가 동작하는지 실습해보며 익히기
학습 내용
UIViewController LifeCycle 이론
이 챕터에서는 UIViewController가 태어나서 죽는 과정에 어떤 메소드가 동작하는지 보는 것
위 사진은 애플 공식문서에 기재되어 있다
뷰가 태어나서 (Appearing - Appeared), 죽는 (Disappearing - Disappeared) 과정에 어떤 메소드가 동작하는지 설명되어 있다.
참고로 태어나기 전에는 loadView() → viewDidLoad()가 동작한다.
태어나기 전,
- func loadView() {}
- view가 곧 태어날 거임
- func viewDidLoad() {}
- view가 태어났음
태어남
- func viewWillAppear(_ animated: Bool) {}
- 나 곧 나타날 거임
- func viewIsAppearing(_ animated: Bool) {}
- 나타나는 중,
- func viewDidAppear(_ animated: Bool) {}
- 나타났음
죽음
- func viewWillDisappear(_ animated: Bool) {}
- 나 곧 사라질 거임
- func viewDidDisappear(_ animated: Bool) {}
- 나 사라졌음
LifeCycle 실습
Xcode Version 15.4
본 실험을 UITabBarController 위에서 진행해보겠다.
첫 번째 뷰컨 = GameViewController
두 번째 뷰컨 = SettingViewController
위 두 가지 UIViewController 클래스에 아래의 메소드를 넣어두었다.
extension SettingViewController {
// MARK: 태어나기 전,
override func loadView() {
super.loadView()
print(#file, #line, #function, #column)
}
override func viewDidLoad() {
super.viewDidLoad()
print(#file, #line, #function, #column)
}
// MARK: 태어남
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
print(#file, #line, #function, #column)
}
override func viewIsAppearing(_ animated: Bool) {
super.viewIsAppearing(animated)
print(#file, #line, #function, #column)
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
print(#file, #line, #function, #column)
}
// MARK: 죽음
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
print(#file, #line, #function, #column)
}
override func viewDidDisappear(_ animated: Bool) {
super.viewDidDisappear(animated)
print(#file, #line, #function, #column)
}
}
실행 후, 첫 번째 탭바가 띄워졌다. 결과는 ?
그럼 두 번째 탭바아이템, SettingViewController를 띄워보겠다. 결과는 ?
오.. 먼저 죽을 준비를 하고, 만들기를 시작한다.
사라질 때도 먼저 죽고나서 새로 만든 뷰를 띄워준다.
배운 점
- 공부하기 전에는 UIViewController의 생명주기 같았는데,
알고보면 UIViewController가 갖는 프로퍼티 view의 생명주기 같다. - 죽을 준비 혹은 죽고난 다음 생성 준비 및 생성됨을 보여주는 것이 신기했다.
참조 링크
https://developer.apple.com/documentation/uikit/uiviewcontroller
'📱 iOS > UIKit' 카테고리의 다른 글
[UIKit] openURL vs SFSafariViewController, 앱 사용 중에 URL 페이지 띄워주는 방식의 차이 알아보기 (1) | 2024.08.24 |
---|---|
[UIKit] UIAlertController & UIAlertAction (0) | 2024.08.23 |
[UIKit] UIButton 타입과 메소드 (0) | 2024.08.21 |
[UIKit] UISegmentedControl 사용해보기 (0) | 2024.06.17 |
iOS 네트워크 통신 (1/3) - 개요 (URLSession, Alamofire, Moya) (0) | 2024.05.12 |