NavigationView: بنیادی باتیں، SwiftUI ایپس میں نیویگیشن اسٹیک

مصنف: IT Sectr اشاعت: 2026-02-22 مطالعے کا وقت: 6 منٹ

NavigationView اسکرینوں کے درمیان اسٹیک پر مبنی نیویگیشن کو منظم کرنے کے لیے SwiftUI کا ایک کنٹینر جزو ہے۔ NavigationView خودکار نیویگیشن بار، عنوان اور «واپس» بٹن کے ساتھ ایک نیویگیشن اسٹیک بناتا ہے۔ iOS 16 سے، Apple NavigationStack استعمال کرنے کی سفارش کرتا ہے۔ Apple دستاویزات میں مزید پڑھیں۔

اہم نکات

  • NavigationView — اسٹیک نیویگیشن کے لیے SwiftUI کنٹینر، نیویگیشن بار اور واپس بٹن بناتا ہے
  • NavigationLink — NavigationView کے اندر نئی اسکرین میں منتقلی کا عنصر
  • NavigationStack — NavigationView کا جانشین (iOS 16+) پروگراماتی اسٹیک نظم و نسق کے ساتھ
  • .toolbar — نیویگیشن بار میں بٹن شامل کرنے کے لیے موڈیفائر
  • .navigationTitle — large یا inline انداز میں اسکرین کا عنوان سیٹ کرتا ہے

NavigationView کیا ہے؟

NavigationView ایک SwiftUI کنٹینر ہے جو اسکرینوں کا ایک درجہ بندی لپیٹتا ہے اور ایک نیویگیشن انٹرفیس فراہم کرتا ہے۔ NavigationView کے اندر NavigationLink کام کرتا ہے — ایک عنصر جسے دبانے پر موجودہ اسکرین ایک نئی اسکرین سے بدل جاتی ہے۔ NavigationView خود بخود عنوان اور «واپس» بٹن کے ساتھ ایک نیویگیشن بار شامل کرتا ہے۔

NavigationView SwiftUI کے ساتھ iOS 13 میں ظاہر ہوا۔ تصوراتی طور پر، یہ UIKit سے UINavigationController کی جگہ لیتا ہے، لیکن اعلانیہ طور پر نافذ کیا گیا ہے۔ دستی push/pop کے بجائے، ڈویلپر NavigationLink کے ذریعے اسکرینوں کے درمیان تعلق کو بیان کرتا ہے۔ نظام خود بخود اسٹیک کا نظم و نسق کرتا ہے۔

NavigationView موڈیفائر .navigationTitle، .navigationBarTitleDisplayMode، .toolbar اور .searchable کو سپورٹ کرتا ہے۔ iOS 16+ کے لیے، Apple نے NavigationStack متعارف کرایا، جو NavigationView API کو محفوظ رکھتا ہے لیکن NavigationPath کے ذریعے پروگراماتی اسٹیک نظم و نسق کا اضافہ کرتا ہے۔ iOS 15 اور اس سے نیچے کو سپورٹ کرنے والے منصوبوں کے لیے، NavigationView واحد آپشن رہتا ہے۔

NavigationLink ایک SwiftUI عنصر ہے جو NavigationView یا NavigationStack کے اندر ہدف اسکرین پر منتقلی پیدا کرتا ہے۔ NavigationLink دبانے پر، نظام ہدف اسکرین کو نیویگیشن اسٹیک میں شامل کرتا ہے۔ منتقلی اینیمیشن iOS پر دائیں سے معیاری push ہے، جو پلیٹ فارم کے مطابق ڈھل جاتی ہے۔

swift
struct ContentView: View {
    var body: some View {
        NavigationView {
            List(items) { item in
                NavigationLink(destination: DetailView(item: item)) {
                    Text(item.title)
                }
            }
            .navigationTitle("فہرست")
        }
    }
}

struct DetailView: View {
    let item: Item

    var body: some View {
        VStack {
            Text(item.description)
                .navigationTitle(item.title)
                .navigationBarTitleDisplayMode(.inline)
        }
    }
}

NavigationLink دو پیرامیٹر لیتا ہے: destination — ہدف View، اور label — وہ عنصر جسے صارف دباتا ہے۔ فہرستوں کے لیے، value اور NavigationLink(value:) کے ساتھ نحو آسان ہے — یہ خود بخود سیل کو غیر منتخب کرتا ہے اور NavigationPath کے ساتھ کام کرتا ہے۔

iOS 16 کے ساتھ، Apple نے NavigationView کے متبادل کے طور پر NavigationStack متعارف کرایا۔ NavigationStack اعلانیہ نحو کو محفوظ رکھتا ہے لیکن ایک انتہائی اہم خصوصیت کا اضافہ کرتا ہے — NavigationPath قسم یا Hashable کی صف کے path پراپرٹی کے ذریعے پروگراماتی اسٹیک نظم و نسق۔

فیچرNavigationView (iOS 13-15)NavigationStack (iOS 16+)
پروگراماتی pushنہیں، صرف NavigationLink کے ذریعےہاں، path.append(value) کے ذریعے
popToRootصرف جڑ تک dismisspath.removeLast(path.count)
ڈیپ لنکسپیچیدہ نفاذpath کے ذریعے بلٹ ان سپورٹ
اسٹیک ٹائپنگنہیں (destination میں کوئی بھی View)ہاں (Hashable اقدار کی صف)
iPad SplitViewColumnStyle / StackStyleNavigationSplitView (iOS 16+)

کم از کم ورژن iOS 16+ والے منصوبوں کے لیے، NavigationStack استعمال کریں۔ iOS 14-15 سپورٹ کے لیے — NavigationView۔ NavigationStack کے پرانے ورژن کے لیے براہ راست مشابہ نہیں ہے، لہذا اپ گریڈ کے لیے مطابقت کی جانچ درکار ہے۔

Toolbar اور navigationTitle ترتیب

.toolbar اور .navigationTitle موڈیفائر نیویگیشن بار کے مواد کو کنٹرول کرتے ہیں۔ .navigationTitle اسکرین کا عنوان سیٹ کرتا ہے، .navigationBarTitleDisplayMode انداز منتخب کرتا ہے: .large (بڑا، ڈیفالٹ) یا .inline (کمپیکٹ، جیسے ترتیبات میں)۔ .toolbar بٹن، تلاش اور سیگمنٹڈ کنٹرول شامل کرتا ہے۔

swift
struct SettingsView: View {
    var body: some View {
        NavigationStack {
            Form {
                Section("پروفائل") {
                    Text("صارف نام")
                    Toggle("اطلاعات", isOn: $notifications)
                }
            }
            .navigationTitle("ترتیبات")
            .navigationBarTitleDisplayMode(.large)
            .toolbar {
                ToolbarItem(placement: .navigationBarTrailing) {
                    Button("محفوظ کریں") { save() }
                }
                ToolbarItem(placement: .navigationBarLeading) {
                    EditButton()
                }
            }
        }
    }
}

.searchable ایک اور موڈیفائر ہے جو نیویگیشن بار میں تلاش بار کو ضم کرتا ہے۔ NavigationView اور NavigationStack دونوں کے ساتھ کام کرتا ہے۔ اسکرول کرتے وقت تلاش خود بخود چھپ جاتی ہے اور نیچے سوائپ کرنے پر ظاہر ہوتی ہے۔ Binding String کے ذریعے فہرست فلٹرنگ کو سپورٹ کرتا ہے۔

NavigationPath کے ساتھ پروگراماتی نیویگیشن

NavigationPath ایک iOS 16+ قسم ہے جو نیویگیشن اسٹیک کو Hashable اقدار کے مجموعہ کے طور پر پیش کرتی ہے۔ ڈویلپر پروگراماتی منتقلی کے لیے path میں عناصر شامل کرتا ہے، واپس آنے کے لیے ہٹاتا ہے۔ NavigationPath ڈیپ لنکس، push اطلاعات اور حالت کی بحالی کو سپورٹ کرتا ہے۔

swift
struct AppNavigation: View {
    @State private var path = NavigationPath()

    var body: some View {
        NavigationStack(path: $path) {
            List(categories) { category in
                NavigationLink("زمرہ \(category.name)",
                               value: category)
            }
            .navigationTitle("زمرے")
            .navigationDestination(for: Category.self) { category in
                ProductListView(category: category)
            }
            .navigationDestination(for: Product.self) { product in
                ProductDetailView(product: product)
            }
        }

        // ڈیپ لنک کے ذریعے پروگراماتی منتقلی
        .onOpenURL { url in
            guard let productId = DeepLinkParser.parse(url) else { return }
            path.append(Product(id: productId))
        }
    }
}

.navigationDestination(for:) ڈیٹا کی قسم رجسٹر کرتا ہے جس کے لیے اسکرین دکھانی ہے۔ جب اس قسم کی قدر path میں شامل کی جاتی ہے، نظام خود بخود ہدف View بنا دیتا ہے۔ یہ طریقہ واضح NavigationLink(destination:) کی جگہ لیتا ہے اور نیویگیشن کو سختی سے ٹائپ شدہ بناتا ہے۔

NavigationView اور NavigationStack تمام Apple پلیٹ فارمز پر کام کرتے ہیں: iOS، iPadOS، watchOS، tvOS اور macOS۔ رویہ اسکرین کے مطابق ڈھل جاتا ہے۔ iPad پر، NavigationStack NavigationSplitView کو سپورٹ کرتا ہے، جو UIKit سے UISplitViewController کی جگہ لیتا ہے اور چوڑی اسکرین پر دو کالم دکھاتا ہے۔

NavigationSplitView (iOS 16+) اسکرین کو سائڈبار (فہرست) اور تفصیل میں تقسیم کرتا ہے۔ iPhone پر، سائڈبار چھپا ہوتا ہے، صرف NavigationLink کے ذریعے تفصیل دکھاتا ہے۔ iPad پر، سائڈبار اور تفصیل اسپلٹ موڈ میں ایک ساتھ دکھائی جاتی ہیں۔

swift
struct AdaptiveNavigation: View {
    @State private var selectedCategory: Category?

    var body: some View {
        NavigationSplitView {
            List(categories, selection: $selectedCategory) { category in
                Text(category.name)
            }
            .navigationTitle("زمرے")
        } detail: {
            ProductListView(category: selectedCategory)
        }
    }
}

NavigationSplitView ہر ڈیوائس کے لیے خود بخود بہترین ڈسپلے موڈ منتخب کرتا ہے۔ پورٹریٹ میں iPhone پر — اسٹیک، لینڈ اسکیپ میں iPad اور iPhone پر — اسپلٹ۔ ڈویلپر کو مختلف سائز کلاسز کے لیے علیحدہ کوڈ لکھنے کی ضرورت نہیں ہے۔

اکثر پوچھے گئے سوالات

NavigationView اور NavigationStack میں کیا فرق ہے؟

NavigationView پرانا API ہے (iOS 13-15)، صرف اعلانیہ NavigationLink کو سپورٹ کرتا ہے۔ NavigationStack نیا API ہے (iOS 16+)، پروگراماتی نیویگیشن، ڈیپ لنکس اور سختی سے ٹائپ شدہ اسٹیک کے لیے path کا اضافہ کرتا ہے۔ Apple نئے منصوبوں کے لیے NavigationStack کی سفارش کرتا ہے۔

نیویگیشن بار میں بٹن کیسے شامل کریں؟

.toolbar موڈیفائر کے ذریعے ToolbarItem کے ساتھ۔ مثال: .toolbar { ToolbarItem(placement: .navigationBarTrailing) { Button('ترتیبات') { } } }. Placement پوزیشن کا تعین کرتا ہے: trailing (دائیں)، leading (بائیں)، principal (مرکز)۔

عنوان اور اس کا انداز کیسے ترتیب دیں؟

عنوان .navigationTitle('عنوان') کے ذریعے سیٹ کیا جاتا ہے۔ انداز — .navigationBarTitleDisplayMode(.large) یا .inline۔ Large — iOS Music انداز میں بڑا عنوان، inline — کمپیکٹ، جیسے ترتیبات میں۔ انداز ہر اسکرین کے لیے علیحدہ علیحدہ تبدیل کیا جا سکتا ہے۔

NavigationLink کے ذریعے ڈیٹا کیسے منتقل کریں؟

تین طریقے: value کے ذریعے (NavigationLink(value:item) { Label }، iOS 16+)، destination + label کے ذریعے، پروگراماتی منتقلی کے لیے isActive کے ذریعے۔ value کے ساتھ NavigationLink فہرستوں کے لیے صاف ستھرا ہے کیونکہ اسے منتقلی سے پہلے ہدف View بنانے کی ضرورت نہیں ہوتی۔

کیا watchOS اور tvOS پر NavigationView استعمال کیا جا سکتا ہے؟

ہاں۔ NavigationView اور NavigationStack iOS، iPadOS، watchOS، tvOS اور macOS پر دستیاب ہیں۔ watchOS پر نیویگیشن Digital Crown کے ساتھ انٹرفیس کا درجہ بندی استعمال کرتی ہے، tvOS پر — ریموٹ کے ساتھ فوکس پر مبنی ان پٹ۔ رویہ خود بخود پلیٹ فارم کے مطابق ڈھل جاتا ہے۔

خلاصہ

  • NavigationView — خودکار نیویگیشن بار اور واپس بٹن کے ساتھ اسٹیک نیویگیشن کے لیے SwiftUI کنٹینر
  • NavigationLink — اہم منتقلی عنصر، اعلانیہ (destination) اور value پر مبنی نحو کو سپورٹ کرتا ہے
  • NavigationStack (iOS 16+) NavigationView کی جگہ لیتا ہے، NavigationPath کے ذریعے پروگراماتی اسٹیک نظم و نسق کا اضافہ کرتا ہے
  • .toolbar نیویگیشن بار میں بٹن شامل کرتا ہے، .navigationTitle large/inline انداز انتخاب کے ساتھ عنوان سیٹ کرتا ہے
  • NavigationPath — پروگراماتی نیویگیشن اور ڈیپ لنکس کے لیے Hashable اقدار کا سختی سے ٹائپ شدہ اسٹیک
  • NavigationSplitView (iOS 16+) iPad اور iPhone کے لیے انٹرفیس کو ڈھالتا ہے، خود بخود split یا اسٹیک منتخب کرتا ہے
  • NavigationView اور NavigationStack کے درمیان انتخاب منصوبے میں کم از کم معاون iOS ورژن سے طے ہوتا ہے

ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے

IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔

پروجیکٹ پر بحث کریں

مزید پڑھیں