iOS 응용 (SwiftUI)
[iOS - SwiftUI] onAppear 호출 타이밍
jake-kim
2024. 9. 30. 23:11
onAppear 호출 타이밍
- UIViewController의 viewWillAppear과 viewDidAppear 중간에 호출됨
- ViewController가 SwiftUI의 뷰를 가지고 있는 상태에서 각 print문을 넣어서 출력해보면, SwiftUI의 onAppear가 중간에 불리는 것을 확인
viewWillAppear
onAppear // 중간에 호출
viewDidAppear
코드)
class ViewController: UIViewController {
...
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
print("viewWillAppear")
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
print("viewDidAppear")
}
}
...
struct MySwiftUIView: View {
var body: some View {
VStack {
Text("Hello, SwiftUI!")
.font(.largeTitle)
.padding()
}
.onAppear {
print("onAppear")
}
.onDisappear {
print("onDisappear")
}
}
}
- onAppear호출 타이밍은 viewWillAppear와 viewDidAppear 중간에 불리고, 다른 상황에서도 동일한 타이밍에 호출
- 백그라운드 -> 포그라운드 진입 시 호출 안됨
- push, present되었다가 뒤로 오는 경우 모두 호출됨
* 다음에 읽어보면 좋은 글: 뷰가 업데이트 될 때 init 호출 타이밍 (#ObservedObject, @StateObject, @State)
* 전체 코드: https://github.com/JK0369/ExOnAppear