[SwiftUI] 상황별 Alert 사용

beeeen:D·2023년 1월 7일
1

iOS

목록 보기
7/17
post-thumbnail
post-custom-banner

문제상황

상황별로 다른 문구를 띄우거나 버튼 수를 달리해야 하는 경우 Alert를 여러 개 써야 한다.

시행착오

처음에 modifier로 alert를 작성하려고 했다.
나는 두 가지 상황을 구분해야 했기에,

.alert( ~~
.alert( ~~

이렇게 작성했는데 당연히 안됨 😭

열심히 구글링한 결과 enum으로 상황을 구분하여 switch문으로 alert를 띄우면 된다고 했다.
바로 enum에 error와 maxIssuableError를 구분해주고 각 상황별 문구를 달리하여 작성했다.
상황별로 테스트까지 진행해보니 원하는대로 적절한 alert가 뜨는 것을 확인할 수 있었다 😊

💡 Solution

1. enum으로 상황 구분
2. switch문 사용
3. case별로 Alert가 뜨도록

예시코드

enum ActiveAlert {
    case on, off
}

struct ContentView: View {
    @State private var showAlert = false
    @State private var activeAlert: ActiveAlert = .on
    
    var body: some View {
        Button {
            if Bool.random() {
                self.activeAlert = .on
            } else {
                self.activeAlert = .off
            }
            self.showAlert = true
        } label: {
            Text("Alert")
        }
        .alert(isPresented: $showAlert) {
            switch activeAlert {
            case .on:
                return Alert(title: Text("On Alert"), primaryButton: .destructive(Text("취소")), secondaryButton: .cancel(Text("OK")))
            case .off:
                return Alert(title: Text("Off Alert"))
            }
        }
    }
}

실행 결과

profile
iOS developer 👩🏻‍💻
post-custom-banner

0개의 댓글