이번 포스팅에서는 스윗한 SwiftUI 책의 내용 중 Alert, ActionSheet에 대해 공부한 내용을 정리해보려 한다.
SwiftUI의 Alert, ActionSheet는 UIKit의 UIAlertController를 그대로 활용하며 기존 매개변수로 스타일을 구분했었는데 SwiftUI에서는 각각 분리하였다. 하지만 내부적으로는 UIAlertController를 같이 사용하고 있어서 구현하는 방식은 둘 다 비슷하다.
아래의 코드는 Alert의 기본동작을 구현한 코드이고, iOS 15부터 코드 작성 방식이 달라져서 두 방식 모두 작성해두었다.
// iOS 15 이후
Button("Show Alert") {
self.showingAlert = true
}
.alert("제목", isPresented: $showingAlert) {
Button("확인") { print("확인 버튼 클릭됨.") }
Button("취소", role: .cancel) { }
} message: {
Text("내용")
}
// iOS 15 이전
Button("Show Alert") {
self.showingAlert = true
}
.alert(isPresented: $showingAlert) {
Alert(
title : Text("제목"),
message : Text("내용"),
primaryButton : .default(Text("확인"), action: { print("확인 버튼 클릭됨.") }),
secondaryButton : .cancel(Text("취소"))
)
}
// iOS 15 이후
Button("ActionSheet") {
self.showingActionSheet = true
}
.confirmationDialog("제목", isPresented: $showingActionSheet, titleVisibility: .visible) {
Button("Dismiss", role: .cancel) { }
Button("1") { }
Button("2", role: .destructive) { }
} message: {
Text("내용")
}
// iOS 15 이전
Button("ActionSheet") {
self.showingActionSheet = true
}
.actionSheet(isPresented: $showingActionSheet) {
ActionSheet(
title : Text("제목"),
message : Text("내용"),
buttons : [
.default(Text("1")),
.destructive(Text("2")),
.cancel(Text("Dismiss"))
]
)
}