반응형
오늘은 이렇게 dismiss 되어 돌아왔을 때 어떤 액션을 취하고 싶으면 어떻게 해야 하는지에 대해 이야기해 볼까 합니다.
1. ParentView (페이지 이동 전 View)
현재 VIEW에서 다음 VIEW로 이동하기 위해서는 NavigationView나 NavigationStack을 이용해야 합니다.
// 부모 페이지
struct ParentView: View {
@State var checked = false
var body: some View {
NavigationView {
NavigationLink(destination:ChildView())
{
Text("페이지 이동 ==> ChildView")
}
}
}
}
2. ChildView (페이지 이동 후 View)
이동된 페이지에서 dismiss를 하거나 상단의 Back 버튼을 클릭하여 다시 ParentView로 돌아가도록 구현합니다.
// 자식 페이지
struct ChildView: View {
@Environment(\.dismiss) var dismiss
var body: some View {
Button(action:{ dismiss() }){
Text("Close")
}
}
}
3. onDisappear
ParentView의 NavigationLink에서 destination에 오는 ChildView에
.onDisappear{ /* ACTION */ }
을 붙여주면, ChildView가 dismiss 될 때 해당 Action을 실행하게 됩니다.
// 부모 페이지
struct ParentView: View {
@State var checked = false
var body: some View {
NavigationView {
NavigationLink(destination:ChildView().onDisappear{ print("[onDisappear] ChildView가 닫혔습니다.") })
{
Text("페이지 이동 ==> ChildView")
}
}
}
}
만약 위와 같이 ChildView()에 onDisappear를 붙여주고 내용을 콘솔 창에 출력하도록 Action을 주면 아래와 같이 콘솔창에 print 된 내용을 확인할 수 있습니다.
반응형
'개발 창고 > iOS' 카테고리의 다른 글
[SwiftUI] How to find the rest of the divided values (0) | 2023.12.02 |
---|---|
[SwiftUI] How to get a specific date from the date (0) | 2023.12.02 |
[SwiftUI] How to Use the Confirm Window (0) | 2023.11.30 |
[SwiftUI] How to Use Various Buttons (0) | 2023.11.29 |
[SwiftUI] How to debug using console in xcode (0) | 2023.11.28 |