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 {}
的视图中加载的
我正在创建一个应用程序并在 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 {}