아요 개발 일기

[SwiftUI] Life Cycle 본문

UI/SwiftUI

[SwiftUI] Life Cycle

소진이 2023. 1. 2. 10:57

안녕하세요~~ 소진입니다 :)

오늘은 SwiftUI의 Life Cycle에 대해 알아보도록하겠습니다!

 


 

SwiftUI의 Life Cycle

 

SwiftUI에서 View의 상태를 나타내는 함수(라이프 사이클)은

 

.onAppear

.onDisappear

 

단 두가지 밖에 없습니다!

 

우선, 쉬운 이해를 위해

UIViewController LifeCycle 에서 가져온 이미지와 비교해보겠습니다

 

UIViewController LifeCycle

 

UIViewController와 SwiftUI의 LifeCycle에서

viewDidAppear와 onAppear가

viewDidDisappear와 onDisAppear가 동일한 역할을 한다고 하네요!

 

그렇다면 정말 동일한 역할을 하는지! 

알아봅시다!


.OnAppear

 

우선,

공식 문서부터 보겠습니다

 

https://developer.apple.com/documentation/swiftui/view/onappear(perform:)

 

"view가 나타날때 액션을 취합니다"

 

오! 정말  UIViewController의 viewDidAppear과 똑같네요!!

선언하는 법도 봅시당

 

 

Perform의 parameters는 수행할 action을 추가해주면됩니다.

이때, action은 optional이며, action이 nil값이면 호출되지 않습니다.

(즉, nil 값을 주면 onAppear 호출 효과 X)

 

Return Value는 view가 나타날 때 action을 트리거한 view를 리턴합니다.

 

좀 전에 action은 optional이라고 했죠??

그래서

.onAppear() // no effect
.onAppear(perform: {
	//action
})

위와 같이 코드를 짤 수 있습니다!

 


 

.onDisappear

 

https://developer.apple.com/documentation/swiftui/view/onappear(perform:)

 

" view가 사라진 후 액션을 취합니다 "

 

이것도 onDidDisappear과 똑같은 역할을 하는군요!

 

 

선언과 Return Value, Parameters는 onAppear과 동일하므로 설명은 넘어가겠습니다! :)

 

 

사용해보기

 

struct ContentView: View {
    var body: some View {
        NavigationView {
            NavigationLink(destination: DetailView()) {
                Text("Hello, world!")
            }
            .onAppear{
                print("onAppear")
            }
            .onDisappear{
                print("onDisappear") 
            }
        }
    }
}

struct DetailView: View {
    var body: some View {
        VStack {
            Text("Hello world")
        }
        .onAppear{
            print("DetailView onAppear")
        }
        .onDisappear{
            print("DetailView onDisappear")
        }
    }
}

 

코드는 위와 같이 작성하였고,

실행해보도록합시당

 

 

잘 나오네요!!!

 

 

 

아래 사이트를 참고하여 코드를 작성하였습니다 :)

https://www.hackingwithswift.com/quick-start/swiftui/how-to-respond-to-view-lifecycle-events-onappear-and-ondisappear

 

How to respond to view lifecycle events: onAppear() and onDisappear() - a free SwiftUI by Example tutorial

Was this page useful? Let us know! 1 2 3 4 5

www.hackingwithswift.com