ခဏလေး ဒီလိုပဲ စဉ်းစားကြည့်
TextField က user ကနေ text input လက်ခံဖို့ view ပါ — `text:` parameter ကို `@State` (ယခင် lesson) ရဲ့ `$` binding နဲ့ တွဲသုံးရပါတယ် (SwiftUI မှာ TextField က internal state မထားပါ, parent ကနေ control ရပါတယ် — controlled component pattern, Compose/React နဲ့ ဆင်တူပါတယ်)။ Button ကတော့ trailing closure ကို trigger ပေးတဲ့ view ပါ.
လက်တွေ့ scenario နဲ့ ချိတ်ကြည့်မယ်
`@State private var email = ""` ရေးထားပြီး, `TextField("Email", text: $email)` လို့ ရေးရင် — user ရိုက်တာနဲ့ `email` state ချက်ချင်း update ဖြစ်ပြီး, TextField ကလည်း screen ပေါ်မှာ user ရိုက်ထားတဲ့ text ကို ပြပေးပါတယ်။ 'Submit' Button ကို tap ရင် `email` value ကို validate/submit လုပ်နိုင်ပါတယ်.
အတူတူ ကြည့်မယ်
struct LoginForm: View {
@State private var email = ""
@State private var password = ""
var body: some View {
VStack {
TextField("Email", text: $email)
.textFieldStyle(.roundedBorder)
SecureField("Password", text: $password)
.textFieldStyle(.roundedBorder)
Button("Login") {
print("Login: \(email)")
}
}
.padding()
}
}TextField ၂ ခုမှာ ရိုက်ထည့်ပြီး Login button ကို tap ရင် Console ထဲမှာ 'Login: <email>' ကို ပြပါလိမ့်မယ်။၅ မိနစ် စမ်းကြည့်
`LoginForm` View ကို run ကြည့်ပါ — email/password ရိုက်ထည့်ပြီး Login button ကို tap ကြည့်ကာ Console output ကို ကြည့်ကြည့်ပါ။
သတိလေးတစ်ချက်
Form validation (email format, password length) ကို client-side မှာသာ မှီခိုမနေပါနှင့် — production app မှာ server-side validation ကိုပါ အမြဲ ထည့်ရပါမယ် (client validation ကို bypass လုပ်လို့ရနိုင်ပါတယ်)။