在我正在开发的应用程序中,我有多个(23)个几乎相同的屏幕。它们因图片而异。所有这些的数据都可以保存在数组 [String] 中。我尝试在 for 循环中调用 NavigationView(单独的屏幕),但无法使其正常工作。这应该是可能的吗?那里有任何例子吗?
你走在正确的轨道上。如果您修改
NavigationLink
的目标参数,那么您可以“复制”视图。
这是通过在
NavigationLink
内部手动定义视图的样子:
struct ContentView: View {
@State private var tests: [String] = ["a", "b", "c", "d"]
var body: some View {
NavigationStack {
List {
ForEach(tests, id:\.self) { test in
NavigationLink {
Text(test)
} label: {
Text(test)
}
}
}
}
}
}
您可以用您的数据替换
tests
。或者,如果您有想要使用的特定视图,您可以这样做:
struct ContentView: View {
@State private var tests: [String] = ["a", "b", "c", "d"]
var body: some View {
NavigationStack {
List {
ForEach(tests, id:\.self) { test in
NavigationLink {
TestView(test)
} label: {
Text(test)
}
}
}
}
}
}
struct TestView: View {
var name: String
var body: some View {
Text(name)
}
}
我刚刚将
NavigationLink
的目的地更改为 TestView。
希望这有帮助!