SwiftUI 可以循环查看吗?

问题描述 投票:0回答:1

在我正在开发的应用程序中,我有多个(23)个几乎相同的屏幕。它们因图片而异。所有这些的数据都可以保存在数组 [String] 中。我尝试在 for 循环中调用 NavigationView(单独的屏幕),但无法使其正常工作。这应该是可能的吗?那里有任何例子吗?

swiftui view navigationview
1个回答
0
投票

你走在正确的轨道上。如果您修改

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。 希望这有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.