Генерация модальных листов SwiftUI из элементов списка - PullRequest
0 голосов
/ 13 апреля 2020

Я пытаюсь повторить поведение, подобное NavigationLink, но отображаю новый вид на листе вместо нового экрана.

В настоящее время список повторяется по microphones, который является массивом моей структуры Microphone с ForEach, и заполняет каждую запись параметром Microphone.model и кнопкой для отображения листа, на котором отображаются остальные информации для этого Microphone.

Однако первая запись в списке отображает подробный лист для microphones[1], а все остальные записи в списке отображают подробный лист для microphones[0]. Можно ли динамически генерировать содержимое листа таким образом?

Это представление меню, генерирующее список:

    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)

}

}

...