从列表项生成 SwiftUI 模式表

Nei*_*eil 6 swiftui swiftui-list

我正在尝试复制类似的行为NavigationLink,但在工作表而不是新屏幕上显示新视图。

目前,列表会迭代我的结构microphones数组,并使用参数和按钮填充每个条目以显示一个工作表,其中显示该工作表的其余信息MicrophoneForEachMicrophone.modelMicrophone

但是,列表中的第一个条目显示 的详细信息表microphones[1],列表中的所有其他条目显示 的详细信息表microphones[0]。是否可以通过这种方式动态生成sheet的内容?

这是生成列表的菜单视图:

    import SwiftUI

struct BrandMenu: View {

var brand: String

var filteredMicrophones: [Microphone] {
    let allMicrophones: [Microphone] = Bundle.main.decode("MicrophoneTestData.json")
    var filtered: [Microphone] = []
    for microphone in allMicrophones {
        if microphone.brand == brand {
            filtered.append(microphone)
        }
    }
    let sorted = filtered.sorted { $0.model < $1.model }
    return sorted
}

@State private var showingDetails = false



var body: some View {
        List(filteredMicrophones) { microphone in
            if microphone.brand == self.brand {
                    Button(action: {self.showingDetails = true}) {
                        MicModelRow(microphone: microphone).contentShape(Rectangle())

                    }
                    .buttonStyle(PlainButtonStyle())
                    .sheet(isPresented: self.$showingDetails) {
                        MicDetailView(microphone: microphone, showSheet: self.$showingDetails)
                }

            }
        }
        .navigationBarTitle(Text(brand), displayMode: .inline)

}
Run Code Online (Sandbox Code Playgroud)

}