- Published on
Picker
- Authors
- Name
- ShoxruxC
- @iOSdasturchi
Picker foydalanuvchiga bir qator variantlardan birini tanlash imkonini beradi. iOS-da siz uni minalar: Sozlamalar > Umumiy > Til, Podcast ilova saralash tartibi, xarid ilovasidagi rang tanlash β hammasi Picker. SwiftUI-dagi Picker uslubiga qarab turli ko'rinishda bo'ladi, lekin asosiy mantiq bir xil: binding va .tag() belgilangan view-lar to'plami.
Picker uchun poydevor: @State o'zgaruvchisi (tanlangan qiymatni saqlaydi), enum yoki massiv (variantlar ro'yxati), va har bir variant uchun .tag() (tanlanganda binding qaysi qiymatga o'zgarishini belgilaydi).
Picker uslublari
.pickerStyle(.menu) β dropdown
Picker("Mavzu", selection: $tanlangan) {
ForEach(TartibVarianti.allCases) { v in
Text(v.rawValue).tag(v)
}
}
.pickerStyle(.menu)
// Ixcham β bitta qatorda label + tanlangan qiymat ko'rsatadi
// Bosish dropdown ochadi β ko'p variant uchun eng mos
.pickerStyle(.wheel) β aylanuvchi barabans
Picker("Soat", selection: $tanlananSoat) {
ForEach(0..<24, id: \.self) { soat in
Text("\(soat):00").tag(soat)
}
}
.pickerStyle(.wheel)
// Vaqt tanlash yoki katta tartibli ro'yxat uchun
// Vertikal joy egallaydi β asosiy element bo'lganda mos
Form ichida .inline
Form {
Section("Mavzu") {
Picker("Mavzu", selection: $tanlangan) {
ForEach(TartibVarianti.allCases) { v in
Text(v.rawValue).tag(v)
}
}
.pickerStyle(.inline)
// List qatorlari ko'rinishida β Form ichida natural
}
}
Tezkor ma'lumotnoma
| Uslub | Ko'rinish | Qachon |
|---|---|---|
.pickerStyle(.menu) | Tappable label β dropdown | 4+ variant uchun standart |
.pickerStyle(.segmented) | Gorizontal segmentlar | 2β4 variant |
.pickerStyle(.wheel) | Aylanuvchi barabans | Tartibli son ro'yxati |
.pickerStyle(.inline) | List qatorlari | Form/List ichida |
Topshiriq: rang tanlash
enum Rang: String, CaseIterable, Identifiable yarating (Qizil, Ko'k, Yashil, Sariq). @State private var tanlangan: Rang = .qizil. Segmented Picker qo'shing. Tanlangan rangni Circle() ko'rinishida pastda ko'rsating (.fill(Color(...)) uslubida). Simulyatorda sinab ko'ring.