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 की अनुशंसा करता है।

navigationBar में बटन कैसे जोड़ें?

.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 एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।

परियोजना पर चर्चा करें

यह भी पढ़ें