728x90
SwiftUI에서 NavigationStack를 사용하면서 화면전환을 하는데, back button을 커스터마이징 하면서,
현재 나타나고 있는 뷰를 닫고 전으로 돌아가야 하는, 즉 네비게이션 스택에서 현재 뷰를 삭제해야하는 액션이 필요했다.
이때 주로 해당 뷰에 Environment 값으로 dismiss를 선언해서 사용하는데, 생소해서 공식 문서를 참고하면서 내용을 번역해서 정리해두었다. 아래 공식 문서 참고
https://developer.apple.com/documentation/swiftui/environmentvalues/dismiss
Dismiss environment value는
DismissAction을 수행하고 싶을 때 사용하는 환경 값?(Environment value).
자세히 말하면 현재 환경(파일, struct?, 뷰?)의 DismissAction 인스턴스를 얻기 위해 사용.
이걸 사용하는 경우는 크게 두가지 예시가 있는데
- sheet나 popover 뷰 같은 modal 창을 닫는 데 사용
- navigationStack에서 현재 나타나고 있는 뷰를 닫을 때(지울 때) 사용
private struct SheetContents: View {
@Environment(\\.dismiss) private var dismiss
var body: some View {
Button("Done") {
dismiss()
}
}
}
예를들면 위의 코드와 같이 사용 (공식문서 제공)
- 주의! dismiss 환경변수는 반드시 지울 뷰 안에 선언해서 사용해야 한다.
- 또한, dismiss 환경 변수는 현재 보여지고 있는 뷰에 대해서만 영향을 미칠 수 있다.
따라서 해당 뷰가 보여지는지 isPresented 변수를 통해 확인해서 쓰는 것도 한 방법
728x90
'iOS' 카테고리의 다른 글
[또러블슈팅] CloudKit + CoreData 을 사용하는 App에서 iCloud 동기화가 안되는 문제 (0) | 2024.12.12 |
---|---|
[또러블슈팅] double-quoted include "헤더파일명" in framework header, expected angle-bracketed instead ERROR (0) | 2024.12.10 |
[iOS/Swift] DateFormatter 클래스 사용하기 (0) | 2021.04.10 |
[iOS] CocoaPods 사용법 (0) | 2021.04.07 |
[iOS] Core data copy(backup, archive) & restore with iCloud (0) | 2021.04.02 |