개인공부
SwiftUI_ onAppear, onDisapear
h_luz
2024. 7. 22. 17:41
.onAppear
: 화면에 표시될 때 onApear 실행
.onDisappear
: 화면에서 사라질 때 onDisappear 실행
import SwiftUI
struct OnAppearPractice: View {
@State var myText: String = "Start text."
@State var count: Int = 0
var body: some View {
NavigationView {
ScrollView {
Text(myText)
LazyVStack {
ForEach(0..<50) { _ in
RoundedRectangle(cornerRadius: 25.0)
.frame(height: 200)
.padding()
.onAppear {
count += 1
}
}
}
}
.onAppear(perform: {
DispatchQueue.main.asyncAfter(deadline: .now() + 5, execute: {
myText = "This is new Text"
})
})
.onDisappear(perform: {
myText = "Ending Text."
} )
.navigationTitle("OnAppear : \(count)")
}
}
}
#Preview {
OnAppearPractice()
}
* onAppear과 onDisappear은 어느 곳에 위치시키는지에 따라서 결과가 달라져서 매우 중요
예를 들어 위 코드에는 ScrollView에 onApear이 위치해서 ScrollView가 나타날 때 onAppear 실행
*LazyVStack
: 한 번에 로드되지 않고, 화면에 나타날 때 로드된다.
ex) 스크롤뷰에 50개의 RoundedRectangle이 나타나도록 ForEach문으로 설정해 주었는데 count에는 처음에는 3개로 표시될 것이다 왜냐하면 LazyVStack은 화면에 나타날 때 로드되기 때문에 화면에 3개가 보이면 3 count
*DispatchQueue
: 작업(task)들을 비동기적으로 또는 동기적으로 실행하는 대기열(queue)입니다.
작업들을 순서대로 실행하거나 동시에 실행할 수 있습니다.