簡體   English   中英

SwiftUI 中的 NavigationLink 不再工作

[英]NavigationLink in SwiftUI not working anymore

我正在創建一個應用程序並在 Swift/SwiftUI 中使用NavigationLink ,但它不再工作了。 我現在從什么時候開始就不知道了,但是 2 或 3 周前,一切正常。 已經在代碼中更長的NavigationLinks工作正常。 但是今天我用了新的,它們不起作用。 如果它們被禁用或其他東西,它會在模擬器和真實設備上查看。 它們是灰色的,你不能點擊它們,或者如果你點擊它們,什么也不會發生。 有什么解決辦法嗎?

import SwiftUI

struct MedikamenteView: View {
    var body: some View {
        Form {
            NavigationLink(
                destination: ASSView(),
                label: {
                    Text("ASS")
                })
            NavigationLink(
                destination: AdrenalinView(),
                label: {
                    Text("Adrenalin")
                })
        }
    }
}

struct MedikamenteView_Previews: PreviewProvider {
    static var previews: some View {
        MedikamenteView()
    }
}

例如,這個工作正常:

import SwiftUI

struct RechtView: View {
    var body: some View {
        Form {
           NavigationLink(
            destination: ParagraphenView(),
            label: {
                Text("Paragraphen")
            })
            NavigationLink(
                destination: AufklaerungEinwilligungView(),
                label: {
                    Text("Die Aufklärung mit nachfolgender Einwilligung")
                })
            NavigationLink(
                destination: NotSanGView(),
                label: {
                    Text("Wichtiges aus dem NotSanG")
                })
        }
        .navigationTitle("Recht")
    }
}

struct RechtView_Previews: PreviewProvider {
    static var previews: some View {
        RechtView()
    }
}

您必須在NavigationView{}中使用NavigationLinks 沒有它NavigationLink將無法工作。 嘗試這個:

import SwiftUI

struct MedikamenteView: View {
    var body: some View {
        NavigationView {
            Form {
                NavigationLink(
                    destination: ASSView(),
                    label: {
                        Text("ASS")
                    })
                NavigationLink(
                    destination: AdrenalinView(),
                    label: {
                        Text("Adrenalin")
                    })
            }
        }
        
    }
}

struct MedikamenteView_Previews: PreviewProvider {
    static var previews: some View {
        MedikamenteView()
    }
}

您的第二個代碼示例可能是從使用NavigationView {}的先前視圖加載的

我可以從您發現它只能在NavigationView中工作的評論中看到,現在想知道為什么。 僅重要的是,您的視圖嵌入在其視圖層次結構正上方的NavigationView中。 例如,此代碼將起作用:

struct FirstView: View {
    var body: some View {
        NavigationView {
           NavigationLink(label: "Go to next view", destination: NextView())
        }
    }
}

struct NextView: View {
...

雖然這不會:

struct FirstView: View {
    @State var modalPresented = false
    var body: some View {
        NavigationView {
            Button("Show fullscreen cover"){
                modalPresented = true
            }
        }
            .fullScreenCover(isPresented: $modalPresented, content: SecondView())
    }
}

struct SecondView: View {
    var body: some View {
        NavigationLink(label: "Go to next view", destination: NextView())
        // Doesn't work because the view is in a fullScreenCover and therefore not a part of the NavigationView.
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM