Code Example 1: Simple alert
❓ Как создать простой alert?
struct SimpleAlertView: View {
@State private var showingAlert = false
var body: some View {
Button("Показать Alert") {
showingAlert = true
}
.alert("Заголовок", isPresented: $showingAlert) {
Button("OK") { }
} message: {
Text("Это сообщение alert")
}
}
}
Code Example 2: Multi-button alert
❓ Как добавить кнопки с разными действиями?
struct MultiButtonAlert: View {
@State private var showingAlert = false
var body: some View {
Button("Удалить элемент") {
showingAlert = true
}
.alert("Удалить?", isPresented: $showingAlert) {
Button("Отмена", role: .cancel) { }
Button("Удалить", role: .destructive) {
deleteItem()
}
} message: {
Text("Это действие нельзя отменить")
}
}
func deleteItem() {
print("Удалено")
}
}
Code Example 3: Alert with item data
❓ Как показать alert с информацией об элементе?
struct ItemAlertView: View {
@State private var itemToDelete: Item?
var body: some View {
Button("Удалить") {
itemToDelete = Item(id: 1, name: "Документ")
}
.alert(
"Удалить \(itemToDelete?.name ?? "")?",
isPresented: Binding(
get: { itemToDelete != nil },
set: { if !$0 { itemToDelete = nil } }
)
) {
Button("Отмена", role: .cancel) { }
Button("Удалить", role: .destructive) { }
}
}
}
Code Example 4: Alert with TextField
❓ Как добавить поле ввода в alert?
struct TextFieldAlert: View {
@State private var showingAlert = false
@State private var username = ""
var body: some View {
Button("Ввести имя") {
showingAlert = true
}
.alert("Введите имя", isPresented: $showingAlert) {
TextField("Имя пользователя", text: $username)
Button("Отмена", role: .cancel) { }
Button("Сохранить") { }
}
}
}
Code Example 5: Alert vs ConfirmationDialog
❓ Когда использовать alert, а когда confirmationDialog?
struct DialogComparison: View {
@State private var showAlert = false
@State private var showDialog = false
var body: some View {
VStack(spacing: 20) {
Button("Alert") { showAlert = true }
.alert("Ошибка сети", isPresented: $showAlert) {
Button("OK") { }
}
Button("Действия") { showDialog = true }
.confirmationDialog("Выберите", isPresented: $showDialog) {
Button("Поделиться") { }
Button("Удалить", role: .destructive) { }
Button("Отмена", role: .cancel) { }
}
}
}
}