상황별로 다른 문구를 띄우거나 버튼 수를 달리해야 하는 경우 Alert를 여러 개 써야 한다.
처음에 modifier로 alert를 작성하려고 했다.
나는 두 가지 상황을 구분해야 했기에,.alert( ~~
.alert( ~~이렇게 작성했는데 당연히 안됨 😭
열심히 구글링한 결과 enum으로 상황을 구분하여 switch문으로 alert를 띄우면 된다고 했다.
바로 enum에 error와 maxIssuableError를 구분해주고 각 상황별 문구를 달리하여 작성했다.
상황별로 테스트까지 진행해보니 원하는대로 적절한 alert가 뜨는 것을 확인할 수 있었다 😊
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"))
}
}
}
}