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