- Published on
Alert va confirmationDialog
- Authors
- Name
- ShoxruxC
- @iOSdasturchi
Alert va tasdiqlash dialoglari iOS-da foydalanuvchidan amalni tasdiqlashni so'rash yoki tanlov berish uchun ikki xil usul. Foto o'chirishga harakat qilganingizda tizim "Ishonchingiz komilmi?" deb so'raydigan kichik oynani tasavvur qiling. Bu alert. Safari-da ulashish tugmasini tepsangiz va pastdan bir nechta tanlovli menyu ko'tarilsa β bu tasdiqlash dialogi (ba'zan action sheet ham deyiladi).
Amaliy qoida: alert β to'xtatuvchi, muhim karorat uchun (ma'lumot o'chirish, hisobdan chiqish, to'lovni tasdiqlash). .confirmationDialog β bir nechta tanlov uchun, lekin hech birining oqibati jiddiy emas (Foto saqrash, Nusxalash, Ulashish).
Ikkisi ham Bool-ga bog'lanadi: Bool true bo'lganda muloqot ko'rinadi. Foydalanuvchi tugmani bosganida yoki chetga tepganda Bool avtomatik false-ga o'rnatiladi.
Alert va dialog variantlari
.confirmationDialog
@State private var showShareOptions = false
Button("Ulashish") {
showShareOptions = true
}
// confirmationDialog pastdan ko'tariladi β bir nechta variant uchun yaxshi
.confirmationDialog("Bu rasmni ulashish", isPresented: $showShareOptions) {
Button("AirDrop bilan ulashish") { }
Button("Nusxalash") { }
Button("Saqlash") { }
Button("Bekor qilish", role: .cancel) { }
}
ConfirmationDialog ekranning pastidan ko'tariladi β vizual tarzda alert-dan kamroq to'suvchi. Biror amalni amalga oshirish uchun bir nechta yo'l tavsiya qilish uchun ishlating, lekin hech biri jiddiy oqibatga ega bo'lmasΠ°.
.alert(item:)
struct AlertItem: Identifiable {
let id = UUID()
let message: String
}
@State private var activeAlert: AlertItem? = nil
Button("Xatoni ko'rsatish") {
activeAlert = AlertItem(message: "Tarmoqqa ulanishda muammo")
}
// item: ixtiyoriy element β nil bo'lmasa alert paydo bo'ladi
.alert(item: $activeAlert) { element in
Alert(
title: Text("Xato"),
message: Text(element.message),
dismissButton: .default(Text("OK"))
)
}
Ma'lum bir element haqida xato yoki xabar ko'rsatish kerak bo'lganda .alert(item:) ishlating. Element Identifiable bo'lishi kerak. Nil-ga o'rnatish alertni yopadi.
Diqqat:
.alertva.confirmationDialogfoydalanuvchi yopgandaBoolni avtomatikfalsega qaytaradi β har bir tugmada buni qo'lda bajarishingiz shart emas.
Tezkor ma'lumotnoma
| Vaziyat | Ishlating |
|---|---|
| Qaytarib bo'lmaydigan amalni tasdiqlash (o'chirish, chiqish) | .alert |
| Bir nechta variant (ulashish, saqlash, nusxalash) taklif qilish | .confirmationDialog |
| Ma'lum bir element haqida xato yoki ogohlantirish ko'rsatish | .alert(item:) |
Button(role: .destructive) | Tanlovni qizil rang bilan ta'kidlash |
Button(role: .cancel) | Cancel tugmasi β iOS uni to'g'ri joylashtiradi |
Topshiriq: o'chirish tasdiqlashi
Ro'yxat view yarating. Har bir qatorda element nomi va qizil "O'chirish" tugmasi bo'lsin. Tugma bosilganda: o'chirish alertini ko'rsating, asosiy tugma .destructive role-ga ega bo'lsin va message: qo'shing. Bekor qilish tugmasi ham bo'lsin. Simulyatorda sinab ko'ring va natijani kuzating.