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 中使用,现在想知道为什么。重要的是您的视图嵌入在视图层次结构正上方的 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.
    }
}

您必须在 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 {}

的视图中加载的