Thuta Learning
ရှာဖွေရန်
IntermediateMobile Developmentintermediate

Text & Input (TextField, Button)

စိတ်လျှော့ပါ။ ဒီခန်းကို စာအုပ်လိုမဟုတ်ဘဲ စကားပြောသလိုပဲ၊ နားလည်လွယ်အောင် ရှင်းပါမယ်။

ဒီခန်းပြီးရင် ဘာတတ်သွားမလဲ

  • Text & Input (TextField, Button) ကို ကြောက်စရာမလိုအောင် နားလည်မယ်
  • ကိုယ်တိုင် Xcode/SwiftUI code ကို run ကြည့်တတ်မယ်
  • Real project ထဲမှာ ဒီ concept ကို ချက်ချင်း အသုံးချတတ်မယ်

ခဏလေး ဒီလိုပဲ စဉ်းစားကြည့်

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 လုပ်နိုင်ပါတယ်.

အတူတူ ကြည့်မယ်

swift
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()
    }
}
You should see
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 လုပ်လို့ရနိုင်ပါတယ်)။

ဒီနေရာမှာ လူအများမှားတတ်တယ်

  • TextField ကို `$` prefix မပါဘဲ ရေးခြင်း (`text: email` သာ ရေးမိခြင်း) — compile error ဒါမှမဟုတ် one-way binding ဖြစ်သွားနိုင်ပါတယ်
  • Password field မှာ `TextField` (plain text) ကို သုံးမိခြင်း — `SecureField` ကို သုံးမှ password ကို dot-masked ပြပါတယ်

အခု ကိုယ်တိုင် စမ်းကြည့်

`LoginForm` View ကို run ကြည့်ပါ — email/password ရိုက်ထည့်ပြီး Login button ကို tap ကြည့်ကာ Console output ကို ကြည့်ကြည့်ပါ။

You'll know it worked when: TextField ၂ ခုမှာ ရိုက်ထည့်ပြီး Login button ကို tap ရင် Console ထဲမှာ 'Login: <email>' ကို ပြပါလိမ့်မယ်။

Text & Input (TextField, Button) | Thuta Learning