일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- 1차접종
- 2차접종
- 3차 접종
- App Test
- Apple
- Apple Watch 7
- Apple Watch Series 7
- happy halloween
- IOS
- iOS 프로젝트 초기 설정
- iOS로 이동
- iphone 13 pro
- lifecycle
- Photoshop
- programmatically setup
- storyboard
- Swift
- Swift project setup
- UINavigationViewController
- UIViewController
- UIViewController Lifecycle
- viewcontroller
- ViewController lifecycle
- viewWillAppear
- 花樣年華 THE NOTES
- 감성 지식 에세이
- 거북이 알
- 경기도 의왕시
- 고성원내과의원
- 관악구 민방위교육장
- Today
- Total
천천히 해도 괜찮아
Swift - UIViewController LifeCycle을 앱으로 테스트하기 본문
안녕하십니까? 엘리아입니다!
지난번에 UIViewController의 LifeCycle에 대한 글을 올렸습니다. 그런데 역시 글로 보는 것보다는 직접 App으로 실행해보고 눈으로 결과를 보면 이해가 더 잘될 수 있습니다. 그래서 오늘은 App으로 테스트를 해보겠습니다. 😆
혹시라도 UIViewController에 대한 글을 아직 보지 못하셨다면 먼저 글을 읽어보시길 추천합니다!
https://dpffldk.tistory.com/12
iOS(Swift) - UIViewController LifeCycle
안녕하십니까? 엘리아입니다! 오늘은 UIViewController 생명주기에 대해 글을 써보려 합니다. iOS 프로그래밍에서 정말 중요한 부분이고 반드시 알고 있어야 합니다. 혹시라도 내용에 틀린 부분이 있
dpffldk.tistory.com
이제 Xcode를 실행하고 코드를 작성해보겠습니다. UIViewController LifeCycle을 두 개의 앱 화면을 왔다 갔다 하는 식으로 테스트해보겠습니다.
//ViewController.swift
import UIKit
class ViewController: UIViewController {
required init?(coder: NSCoder) {
super.init(coder: coder)
print("init 호출")
}
override func loadView() {
super.loadView()
print("loadView 호출")
}
override func viewDidLoad() {
super.viewDidLoad()
print("viewDidLoad 호출")
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
print("viewWillAppear 호출")
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
print("viewDidAppear 호출")
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
print("viewWillDisappear 호출")
}
override func viewDidDisappear(_ animated: Bool) {
super.viewDidDisappear(animated)
print("viewDidDisappear 호출")
}
deinit {
print("deinit 호출")
}
}
앱이 실행되면 가장 먼저 보여줄 화면의 코드입니다. init부터 deinit까지호출되는 시점에서 print 합니다.
// SecondViewController.swift
import UIKit
class SecondViewController: UIViewController {
required init?(coder: NSCoder) {
super.init(coder: coder)
print("Second init 호출")
}
override func loadView() {
super.loadView()
print("Second loadView 호출")
}
override func viewDidLoad() {
super.viewDidLoad()
print("Second viewDidLoad 호출")
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
print("Second viewWillAppear 호출")
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
print("Second viewDidAppear 호출")
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
print("Second viewWillDisappear 호출")
}
override func viewDidDisappear(_ animated: Bool) {
super.viewDidDisappear(animated)
print("Second viewDidDisappear 호출")
}
deinit {
print("Second deinit 호출")
}
@IBAction func DismissButtonDidTapped(_ sender: Any) {
self.dismiss(animated: true, completion: nil)
}
}
첫 번째 화면에서 다음 화면으로 넘어갔을 때 보여줄 화면의 코드입니다. 그런데 마지막 줄에 self.dismiss(animated: true, completion: nil) 이라는 코드가 보입니다. 저 코드는 현재 보이는 두 번째 화면을 닫는다는 뜻입니다. 두 번째 화면에 있는 버튼을 눌렀을 때 실행됩니다. 설명이 길어질지도 모르니까 @IBAction에 대해서는 다음 글에서 설명해보겠습니다. ^^
아래 사진은 테스트할 앱 화면입니다. (디자인을 보면 정말 마음에 안 들지만... ) '다음으로' 버튼을 누르면 주황색 화면이 보이고 '이전으로' 버튼을 누르면 주황색 화면이 닫히고 빨간색 화면으로 돌아옵니다.
앱을 실행하면 빨간색 화면이 먼저 보입니다. 빨간색 화면이 나왔을 때 init, loadView, viewDidLoad, viewWillAppear, viewDidAppear까지 호출되었다고 print 되는 것 보셨나요? 그리고 빨간색 화면이 종료되면 viewWillDisappear, viewDidDisappear, deinit까지 호출됩니다.
빨간색 화면에서 주황색 화면으로 넘어가서 주황색 화면이 떠있는 동안은 Second init ~ Second viewDidAppear가 호출되고 주황색 화면이 사라지자 Second viewWillDisappear ~ Second deinit까지 호출됩니다.
이 글을 보고 계신 분들도 UIViewController의 Lifecycle을 정확히 이해하고 싶다면 저처럼 직접 앱으로 테스트해보며 공부하시는 것을 추천드립니다..! 음.. 그런데 조금 아쉬운 부분이 있습니다...ㅠㅠ 원래 viewDidLoad와 viewWillAppear의 차이를 정확히 보여드리려고 했는데 이 프로젝트에서는 그 부분을 보여드리지 못했네요.. 다음 글에서 보여드릴 수 있도록 하겠습니다.
소스 코드가 필요하시다면 아래 링크에서 다운로드하실 수 있습니다..! ViewControllerLifecycleExample 폴더 안에 코드가 있습니다.
https://github.com/yuminc03/Tistory_Swift_SourceCode
GitHub - yuminc03/Tistory_Swift_SourceCode: 티스토리 블로그에 올린 Swift글에 있던 코드를 올립니다.
티스토리 블로그에 올린 Swift글에 있던 코드를 올립니다. Contribute to yuminc03/Tistory_Swift_SourceCode development by creating an account on GitHub.
github.com
그럼 다음에는 또 다른 글로 다시 찾아오겠습니다. 긴 글 읽어주셔서 감사합니다!

'iOS > Swift' 카테고리의 다른 글
iOS Swift App 프로젝트 초기 설정(iOS 13+) (0) | 2023.03.05 |
---|---|
UINavigationViewController로 ViewController Lifecycle 테스트 (0) | 2022.05.01 |
iOS(Swift) - UIViewController LifeCycle (2) | 2022.02.06 |