[SwiftUI] .alert에서 dismiss 활용하기

김형준·2023년 8월 30일
0

Swift

목록 보기
6/6

import SwiftUI

struct alertPractice: View {
    @Environment(\.dismiss) private var dismiss: DismissAction
    @State var isAlert: Bool = false
    
    var body: some View {
        VStack{
            Button("alert 연습") {
                print("1-토글 누르기 전 값\(isAlert)")
                isAlert.toggle()
                print("2-토글 누르기 후 값\(isAlert)")
            }
        }
        .alert("피드", isPresented: $isAlert) {
            Button("등록" ,role: .destructive) {
                dismiss()
                print("3-dismiss()후 값\(isAlert)")
            }
        }
    }
}

var dismiss: DismissAction { get } 설명은 아래와 같다.
An action that dismisses a presentation.

.alert에서 true/false 값인 isAlert는 alert화면을 구분한다.

하지만, @Environment(.dismiss) private var dismiss: DismissAction
사용하면 true로 올라간 alert창에서 dissmiss()를 사용하면 alert창이 닫히면서
다시 isAlert는 false로 돌아간다.

즉, dismiss()를 사용하면 isAlert = false를 안해줘도 된다.

2번 반복-Button("alert 연습") 누른 후 alert화면에서 버튼("등록")
아래처럼 "1-토글 누르기 전 값 false" 로 돌아감을 확인할 수 있다.

추가정보
dismiss()는 아래와 같을 경우 사용한다.
1.Dismiss a modal presentation, like a sheet or a popover.
2.Pop the current view from a NavigationStack.
3.Close a window that you create with WindowGroup or Window.

혹시 문제가 오류가 있다면 언제든 댓글로 알려주세요!

profile
기억보단 기록, 느리더라도 꾸준히

0개의 댓글