Jak použít kontextové menu SwiftUI řádek Tabulky?

0

Otázka

Zjistil jsem, že nový stůl je součástí SwiftUI 3.0 je jako hračka, která může být použita snadno, ale je obtížné rozšířit více funkcí.

TableRow a TableColumn dědit z hodnoty objektu. Jak mohu získat pohled na řadě? Chci nastavit jinou kontextovou nabídku pro každý řádek. Kromě toho, chci, aby kontextovou nabídku záhlaví sloupce.

Jak to provést na základě Tabulky component? Nechci použít Seznam komponent.

struct Person: Identifiable {

let givenName: String

let familyName: String

let id = UUID()

}

@State private var people = [

Person(givenName: "Juan", familyName: "Chavez"),

Person(givenName: "Mei", familyName: "Chen"),

Person(givenName: "Tom", familyName: "Clark"),

Person(givenName: "Gita", familyName: "Kumar"),

]

@State private var sortOrder = [KeyPathComparator(\Person.givenName)]

var body: some View {

Table(people, sortOrder: $sortOrder) {

TableColumn("Given Name", value: \.givenName)

TableColumn("Family Name", value: \.familyName)

}

.onChange(of: sortOrder) {

people.sort(using: $0)

}

}
contextmenu swiftui tablecolumn tablerow
2021-11-16 23:43:33
1

Nejlepší odpověď

0

V zájmu contextMenu pracuje na SwiftUI 3.0 Tabulce je nutné přidat do každé TableColumn položky. Navíc, pokud se chcete přidat Double Tap podporu je nutné jej přidat samostatně.

Table(documents, selection: $fileSelection) {
    TableColumn("File name") { item in
        Text(item.filename)
            .contextMenu { YOUR_CONTEXT_MENU }
            .simultaneousGesture(TapGesture(count: 1).onEnded { fileSelection = item.id })
            .simultaneousGesture(TapGesture(count: 2).onEnded { YOUR_DOUBLE_TAP_IMPLEMENTATION })
    }
    TableColumn("Size (MB)") { item in
        Text(item.size)
            .contextMenu { YOUR_CONTEXT_MENU }
            .simultaneousGesture(TapGesture(count: 1).onEnded { fileSelection = item.id })
            .simultaneousGesture(TapGesture(count: 2).onEnded { YOUR_DOUBLE_TAP_IMPLEMENTATION })
    }
}
2021-11-21 10:57:48

Děkuji vám za odpověď, ale toto provedení může pracovat pouze na obsahu buňky, nemůže zcela pokrýt obsah celá řada, a nebude mít vliv na prázdnou část trati.
user1397892

V jiných jazycích

Tato stránka je v jiných jazycích

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................