Form a SwiftUI-ban: mi ez, űrlap létrehozása és beállítása

Szerző: IT Sectr Megjelenés: 2026-06-25 Olvasási idő: 8 perc

A Form a SwiftUI-ban egy konténerkomponens strukturált beállítás- és adatbeviteli felületek építéséhez, amely az iOS Settings kialakítását követi. A komponens automatikusan csoportosítja a vezérlőelemeket szekciókba rendszer-elválasztásokkal és stílusokkal, megkímélve a fejlesztőt az elválasztók és színek kézi kalibrálásától. A Apple Developer Documentation (2025) szerint a Form minden platformhoz igazítja a megjelenést — az iOS grouped-tábláitól a macOS standard listáiig — egyetlen API-t megtartva.

A legfontosabbak

  • Form — konténer Settings stílusú felületekhez a SwiftUI-ban, az elemek automatikus csoportosításával
  • A Section a Formon belül logikai blokkokat hoz létre fejlécekkel és láblécekkel
  • A Picker, Toggle, TextField automatikusan a platformnak megfelelő stílust kapja
  • Az elválasztások és elválasztók a rendszer által kezeltek, kézi beállítás nélkül
  • A NavigationLink hierarchikus űrlapok létrehozását teszi lehetővé aloldalakra való átnavigálással

Mi az a Form a SwiftUI-ban?

A Form egy speciális SwiftUI-konténer, amelyet adatbeviteli űrlapok és beállítási képernyők létrehozására terveztek. Örökli a List viselkedését, de platformstílusokat ad hozzá: iOS-en a Form grouped-táblaként jelenik meg a szekciók lekerekített sarkaival, macOS-en pedig standard rendszerlistaként jelölőnégyzetekkel és vezérlőelemekkel.

A VStack és HStack kézi elrendezésével ellentétben a Form automatikusan elosztja az elemek közötti elválasztásokat, elválasztókat ad hozzá, és a megjelenést a rendszertémához — világoshoz vagy sötéthez — igazítja. A fejlesztő csak a logikai szerkezetet írja le: a Section-t a csoportosításhoz és a benne lévő vezérlőelemeket. Az űrlap maga dönti el, hogyan helyezze el vizuálisan a Picker, Toggle vagy Stepper elemeket az adott platformon.

A Form támogatja az összes standard SwiftUI beviteli elemet: TextField szöveghez, SecureField jelszavakhoz, Picker listából való választáshoz, Toggle be/ki kapcsoláshoz, Slider tartományokhoz, Stepper lépcsős értékekhez és DatePicker dátumhoz. Minden elem automatikusan a HIG (Human Interface Guidelines) szerinti stílust kapja a célplatformon az Apple-től.

Form vs List: a konténerek összehasonlítása

A külső hasonlóság ellenére a Form és a List különböző feladatokat old meg. A List egy univerzális konténer görgethető adatlisták megjelenítéséhez, csúsztatási műveletekkel és sorok szerkesztésével. A Form egy speciális konténer az adatbevitelhez és beállításokhoz, a vezérlőelemek rendszerstílusaira optimalizálva.

A List dinamikus adatok megjelenítésére alkalmas: hírfolyamok, csevegések, termékkatalógusok. A Form — statikus képernyőkhöz kiszámítható mezőkészlettel: felhasználói profil, alkalmazásbeállítások, regisztrációs űrlap. A kulcsfontosságú különbség: a Form elemei lehetnek interaktív vezérlőelemek, míg a List sorai leggyakrabban adatokat jelenítenek meg, és érintésre navigációval vagy művelettel reagálnak.

ParaméterFormList
RendeltetésAdatbevitel, beállításokListák megjelenítése
Szekciók stílusaGrouped (iOS), rendszer (macOS)Plain vagy Grouped
VezérlőelemekPicker, Toggle, Slider, StepperKorlátozott (gomb)
Dinamikus adatokKorlátozott (ForEach a Sectionön belül)Teljes támogatás
Csúsztatási műveletekIgen, swipeActionsIgen, swipeActions

A Apple Human Interface Guidelines (2025) szerint a Formot beállítási és beviteli képernyőkhöz kell használni, ahol egy képernyőn 3 és 20 közötti vezérlőelem van, és a szekciókra bontás javítja az észlelést.

Section szekciók a Formon belül

A Section a Form fő építőeleme, amely lehetővé teszi a logikailag összefüggő elemek csoportosítását. Minden Section rendelkezhet fejléccel, lábléccel és tetszőleges számú vezérlőelemmel belül. A rendszer automatikusan hozzáadja a szekciók közötti elválasztásokat, és mindegyiket lekerekített sarkú vizuális blokkba csomagolja.

A Section használata kritikus fontosságú az űrlap olvashatósága szempontjából: a jelentés szerint csoportosított elemeket a felhasználó könnyebben észleli. Például a profilbeállítások képernyőjén külön szekciókba lehet rendezni a „Személyes adatok", „Értesítések" és „Biztonság" elemeket. Minden szekció tartalmazhat magyarázó szöveggel ellátott láblécet, amelyet a rendszer kisebb betűmérettel jelenít meg az elemcsoport alatt.

swift
Form {
    Section(header: Text("Profil")) {
        TextField("Név", text: $name)
        TextField("Email", text: $email)
    }

    Section(header: Text("Értesítések"),
            footer: Text("Kikapcsolás az értekezletek alatt")) {
        Toggle("Push notifications", isOn: $pushEnabled)
        Toggle("Email notifications", isOn: $emailEnabled)
    }
}

A példában az első „Profile" szekció két szövegmezőt tartalmaz lábléc nélkül, a második „Notifications" szekció pedig két kapcsolót magyarázattal a csoport alatt. A lábléc automatikusan elválasztást ad hozzá, és caption betűstílust használ. A Section tartalmazhat láblécet fejléc nélkül vagy fejlécet lábléc nélkül.

Vezérlőelemek a Formban

A Form támogatja az összes standard SwiftUI beviteli elemet. A Picker a Formban automatikusan navigációs sorként jelenik meg, külön választóképernyőre való átnavigálással iOS-en. A Toggle kapcsolóval ellátott sorként jelenik meg, a jobb szélhez igazítva. A TextField a rendszer beviteli stílusát kapja placeholderrel.

Numerikus értékekhez Stepper (lépcsős változtatás) és Slider (folyamatos változtatás tartományban) használható. A DatePicker több módot támogat: date, time, dateAndTime. Színválasztáshoz ColorPicker áll rendelkezésre. Minden elem további kód nélkül igazodik a platformhoz — iOS-en a vezérlőelemek a UIKit natív stílusait, macOS-en az AppKitet használják.

ElemRendeltetésStílus a Formban
TextFieldSzövegbevitelSor placeholderrel
SecureFieldJelszóbevitelSor rejtett karakterekkel
PickerVálasztás listábólNavigationLink a választóképernyőre
ToggleBe/KiSor kapcsolóval
SliderÉrtéktartományVízszintes csúszka
DatePickerDátum/idő kiválasztásaKompakt vagy kerékmódos stílus

A Formon belüli egyedi vezérlőelemekhez bármilyen SwiftUI View használható — ezek öröklik a szekció standard viselkedését. Azonban ajánlott a rendszerelemeknél maradni, mert ezek garantálják a HIG-nek való megfelelést, és további beállítás nélkül támogatják az Accessibility (VoiceOver, Dynamic Type) funkciót.

Form kódpéldák

Nézzük meg egy regisztrációs képernyő létrehozását a Form használatával. Az űrlap négy szekciót tartalmaz: személyes adatok, szerepkör kiválasztása, előfizetési beállítások és küldőgomb. A Section csoportosításhoz és a standard SwiftUI vezérlőelemek használatosak.

swift
struct RegistrationForm: View {
    @State private var name = ""
    @State private var email = ""
    @State private var role = "Developer"
    @State private var agreedToTerms = false

    let roles = ["Developer", "Designer", "Manager"]

    var body: some View {
        NavigationStack {
            Form {
                Section(header: Text("Személyes adatok")) {
                    TextField("Name", text: $name)
                    TextField("Email", text: $email)
                        .keyboardType(.emailAddress)
                }

                Section(header: Text("Szerepkör")) {
                    Picker("Select role", selection: $role) {
                        ForEach(roles, id: \.self) { role in
                            Text(role).tag(role)
                        }
                    }
                }

                Section {
                    Toggle("Agree to terms", isOn: $agreedToTerms)
                }

                Section {
                    Button("Regisztráció") {
                        submitForm()
                    }
                    .disabled(!agreedToTerms)
                }
            }
            .navigationTitle("Registration")
        }
    }

    private func submitForm() { }
}

Az űrlap négy Section-re van bontva: személyes adatok két szövegmezővel, szerepkör kiválasztása Pickerrel, a feltételekkel való egyetértés Toggle-lel és a regisztrációs gomb. A gomb addig inaktív, amíg a felhasználó nem fogadja el a feltételeket — ez egy példa a Formon belüli validációra. A NavigationStack fejlécet ad hozzá, és lehetővé teszi, hogy a Picker külön választóképernyőt nyisson iOS-en.

Beállítási űrlap alszekciókkal

swift
struct SettingsForm: View {
    @State private var volume: Double = 0.5
    @State private var isDarkMode = false
    @State private var reminderDate = Date()

    var body: some View {
        NavigationStack {
            Form {
                Section(header: Text("Megjelenés")) {
                    Toggle("Dark mode", isOn: $isDarkMode)
                    Slider(value: $volume, in: 0...1) {
                        Text("Hangerő")
                    }
                }

                Section(header: Text("Emlékeztetők"),
                        footer: Text("Értesítést kap a kiválasztott időpontban")) {
                    DatePicker("Remind at",
                        selection: $reminderDate,
                        displayedComponents: .hourAndMinute)
                }

                Section {
                    NavigationLink("Advanced Settings",
                        destination: AdvancedSettingsView())
                }
            }
            .navigationTitle("Settings")
        }
    }
}

Ez a példa a Slider, DatePicker és NavigationLink kombinációját mutatja be a Formon belül. A DatePicker a hourAndMinute módot használja, hogy csak az időt jelenítse meg. Az utolsó szekcióban lévő NavigationLink átnavigálást hoz létre a kibővített beállítások képernyőjére — gyakori minta a Settings stílusú felületeknél. A szekciók fejlécei és láblécei öndokumentálóvá teszik az űrlapot: a felhasználó azonnal megérti, melyik csoporthoz tartozik az egyes vezérlőelemek.

Gyakran ismételt kérdések

Mi a különbség a Form és a List között a SwiftUI-ban?

A Form az adatbevitelre és beállításokra van optimalizálva: a vezérlőelemek rendszerstílusokat, a szekciók lekerekített sarkokat és elválasztásokat kapnak. A List egy univerzális konténer az adatok megjelenítéséhez. A Form beállítási képernyőkhöz alkalmas, a List pedig csevegésekhez, hírfolyamokhoz, katalógusokhoz.

Használhatok Pickert a Formon belül?

Igen, a Formon belüli Picker automatikusan sorként jelenik meg a kiválasztott értékkel és NavigationLink-kel a listából való választáshoz iOS-en. macOS-en a Picker legördülő listaként vagy rádiógomb-csoportként jelenik meg a stílustól függően. Az alkalmazkodás további kód nélkül történik.

Hogyan adhatok hozzá egyedi View-t a Formhoz?

Bármilyen SwiftUI View elhelyezhető a Formon vagy a Sectionön belül. Egyedi vezérlőelemeknél ajánlott a szekció standard elválasztásainak öröklése és a Dynamic Type támogatása rendszerbetűtípusokkal. Kerülje a rögzített méreteket és színeket, hogy az űrlap minden eszközön helyesen jelenjen meg.

Támogatja a Form a görgetést?

Igen, a Form automatikusan ScrollView-ba csomagolódik, ha a tartalom meghaladja a képernyő magasságát. Nem kell kézzel ScrollView-t hozzáadni — a rendszer maga határozza meg a görgetés szükségességét. Az olyan űrlapokhoz, amelyeknek nem szabad görgetniük, használjon rögzített magasságú VStacket.

Hogyan módosítsam a Form stílusát iOS-en?

A Form iOS-en két stílust támogat a .formStyle(.grouped) módosítóval — a standard grouped megjelenést lekerekített szekciókkal. macOS-hez a .formStyle(.columns) áll rendelkezésre többoszlopos elrendezéssel. A stílus egyszerre vonatkozik az egész Formra, és megváltoztatja az összes benne lévő elem vizuális megjelenését.

Összegzés

  • Form — SwiftUI-konténer Settings stílusú felületekhez, automatikus csoportosítással a Sectionön keresztül
  • A Section biztosítja az elemek logikai felosztását fejlécekkel és láblécekkel
  • A Picker, Toggle, TextField kézi beállítás nélkül automatikusan alkalmazkodnak a platform stílusához
  • Az elválasztások és elválasztók a rendszer által kezeltek, összhangban az Apple HIG-vel minden platformon
  • A NavigationLink a Formon belül hierarchikus navigációt hoz létre — standard a beállítási képernyőknél
  • A Form támogatja az összes SwiftUI beviteli elemet: Slider, Stepper, DatePicker, ColorPicker
  • Használja a Formot beállítási és beviteli képernyőkhöz, a Listet pedig dinamikus adatlisták megjelenítéséhez

Kulcsrakész mobilalkalmazást fejlesztünk

Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.

Projekt megbeszélése

Olvassa el is