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

Navigation Basics (NavigationStack)

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

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

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

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

`NavigationStack` က screen (View) history ကို stack အနေနဲ့ ထိန်းချုပ်ပေးတဲ့ container ပါ — `NavigationLink` ကို tap ရင် View အသစ်ဆီ ကူးပြောင်း (push) သွားပြီး, top-left back button (automatic ပေါ်လာ) ကို tap ရင် ယခင် screen ဆီ ပြန်သွားပါတယ် (pop) — Android/Compose ရဲ့ NavController.navigate()/popBackStack() concept နဲ့ ဆင်တူပါတယ်, ဒါပေမယ့် iOS မှာ back button ကို manual ရေးစရာ မလိုပါ (automatic ပါလာပါတယ်).

လက်တွေ့ scenario နဲ့ ချိတ်ကြည့်မယ်

`NavigationStack { HomeScreen() }` ကို root မှာ ချထားပြီး, `HomeScreen` ထဲမှာ `NavigationLink("Go to Detail") { DetailScreen() }` လို့ ရေးရင် — tap လိုက်တာနဲ့ `DetailScreen` ဆီ ကူးပြောင်းသွားပြီး, top-left က automatic ပေါ်လာတဲ့ back button (< Home) ကို tap ရင် `HomeScreen` ဆီ ပြန်ရောက်ပါလိမ့်မယ်.

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

swift
struct AppNavigation: View {
    var body: some View {
        NavigationStack {
            HomeScreen()
        }
    }
}

struct HomeScreen: View {
    var body: some View {
        NavigationLink("Go to Detail") {
            DetailScreen()
        }
        .navigationTitle("Home")
    }
}
You should see
'Go to Detail' link ကို tap ရင် DetailScreen ဆီ ကူးပြောင်းပြီး, top-left back button ကနေ Home ဆီ ပြန်သွားနိုင်တာ တွေ့ရမည်။

၅ မိနစ် စမ်းကြည့်

`AppNavigation`/`HomeScreen`/`DetailScreen` ကို ကိုယ်တိုင်ရေးပြီး Simulator ပေါ်မှာ Home → Detail → back (swipe-back gesture ကိုပါ) ကို တကယ် စမ်းကြည့်ပါ။

သတိလေးတစ်ချက်

iOS ရဲ့ built-in 'swipe from left edge to go back' gesture ကို custom gesture handler (`onTapGesture`, `DragGesture`) ကနေ conflict ဖြစ်အောင် override မလုပ်မိအောင် သတိထားပါ — user expectation ကို ချိုးဖောက်နိုင်ပါတယ်။

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

  • `NavigationStack` ကို root level မှာ တစ်ခါတည်းပဲ ချထားရမယ်ဆိုတာ မသိဘဲ, nested View တွေမှာ ထပ်ထည့်ခြင်း — navigation behavior ရှုပ်ထွေးသွားနိုင်ပါတယ်
  • `.navigationTitle()` ကို screen တစ်ခုစီမှာ ထည့်ဖို့ မေ့ခြင်း — navigation bar title empty ဖြစ်နေနိုင်ပါတယ်

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

`AppNavigation`/`HomeScreen`/`DetailScreen` ကို ကိုယ်တိုင်ရေးပြီး Simulator ပေါ်မှာ Home → Detail → back (swipe-back gesture ကိုပါ) ကို တကယ် စမ်းကြည့်ပါ။

You'll know it worked when: 'Go to Detail' link ကို tap ရင် DetailScreen ဆီ ကူးပြောင်းပြီး, top-left back button ကနေ Home ဆီ ပြန်သွားနိုင်တာ တွေ့ရမည်။

Navigation Basics (NavigationStack) | Thuta Learning