जब मैं स्क्रॉलव्यू के अंदर नेविगेशन व्यू डालता हूं, तो परिणाम कैनवास में खाली होता है। जबकि अगर यह स्क्रॉलव्यू के बाहर है तो दिखाई देता है। एक के अंदर दूसरे से मेरा यही मतलब है:

struct ContentView: View {
    var body: some View {
        ScrollView {
            NavigationView {
                List {
                    NavigationLink("another view", destination: ChildView())
                }
            }
        }
    }
}

क्या वही चीज़ हासिल करने का कोई तरीका है?

-1
DesmosArtist 3 सितंबर 2021, 01:56

2 जवाब

सबसे बढ़िया उत्तर

यह सिर्फ List से बहुत अलग क्यों है?

List के साथ, आप पंक्तियों में Buttons, Text, NavigationLinks, वास्तव में कुछ भी जोड़ सकते हैं। आप List को भी स्क्रॉल कर सकते हैं (यदि यह काफी लंबा है)।

आप एक ScrollView और ScrollViewReader दृष्टिकोण भी अपना सकते हैं - जो भी हो, वह NavigationView के अंदर होना चाहिए। NavigationView के ScrollView बाहर को रखने का कोई मतलब नहीं है, क्योंकि NavigationView वह है जो आपकी स्क्रीन को शीर्ष पर एक शीर्षक देता है और क्यों होगा जिसे स्क्रॉल किया जाए?

इन दोनों उदाहरणों में यह ChildView है:

struct ChildView: View {
    var body: some View {
        Text("Destination")
    }
}

List के साथ उदाहरण

struct ContentView: View {
    var body: some View {
        NavigationView {
            List {
                Text("Text")

                Button("Button") {
                    print("press")
                }

                NavigationLink("Another view", destination: ChildView())
            }
        }
    }
}

Result

ScrollView और ScrollViewReader के साथ उदाहरण

struct ContentView: View {
    var body: some View {
        NavigationView {
            ScrollView {
                ScrollViewReader { reader in
                    Button("Scroll to random item") {
                        reader.scrollTo(Int.random(in: 0 ..< 100))
                    }

                    ForEach(0 ..< 100) { index in
                        Text("Item: \(index + 1)").id(index)
                    }

                    NavigationLink("Another view", destination: ChildView())
                }
            }
        }
    }
}

नतीजा:

Result

1
George 3 सितंबर 2021, 10:10

अगर मैं सही ढंग से समझ गया कि आप क्या बनाने की कोशिश कर रहे हैं, तो आप नेविगेशन व्यू का उपयोग कर सकते हैं और इसे निम्न की तरह प्रारंभ कर सकते हैं:

struct CalendarView: View {
    @State private var activeView: String? = "First View"
    var body: some View {
        NavigationView {
            VStack {
                NavigationLink(destination: Text("First View"), tag: "First View", selection: $activeView) { EmptyView() }
                NavigationLink(destination: Text("Second View"), tag: "Second View", selection: $activeView) { EmptyView() }
                List {
                    Button("Go to first View") {
                        self.activeView = "First View"
                    }
                    Button("Go to second View") {
                        self.activeView = "Second View"
                    }
                }
            }
        }
    }
}
0
Zapata 3 सितंबर 2021, 02:10