Swift 中的 ForEach 循环使用二维数组的内容

ForEach loop in Swift to use content of 2D array

我想使用 ForEach 循环,但它不起作用。

let navigation = [["Kunde", "person"], ["Wartung", "gear"]]


NavigationView {
    List {
        NavigationLink(destination: ListView(title: "Kunde")) {
            Label("Kunde", systemImage: "person")
        }
        NavigationLink(destination: ListView(title: "Wartung")) {
            Label("Wartung", systemImage: "gear")
        }
        // MANY MORE
    }
}

我的方法打印从 0 到 7 的数字,但我想要数组的内容。

我的做法:

let navigation = [["Kunde", "person"], ["Wartung", "gear"]]


NavigationView {
    List {
        ForEach(navigation.indices) { index in
            NavigationLink(destination: ListView(title: "\(index)")) {
                Label("\(self.index)", systemImage: "\(index)")
            }
        }
    }
}

您只给出了 index。例如,您可以 navigation[index][0] 来获取标题,但这非常乏味。

更好的方法是创建一个自定义类型,而且它也是 Identifiable,因此在可变项目列表上使用更安全。

代码:

struct ContentView: View {
    private let navigation = [
        NavigatableView("Kunde", image: "person"),
        NavigatableView("Wartung", image: "gear")
    ]

    var body: some View {
        NavigationView {
            List {
                ForEach(navigation) { newView in
                    NavigationLink(destination: ListView(title: newView.title)) {
                        Label(newView.title, systemImage: newView.image)
                    }
                }
            }
        }
    }
}
struct NavigatableView: Identifiable {
    let id = UUID()
    let title: String
    let image: String

    init(_ title: String, image: String) {
        self.title = title
        self.image = image
    }
}