Ako použiť kontextové menu SwiftUI riadok Tabuľky?

0

Otázka

Zistil som, že novú tabuľku súčasťou SwiftUI 3.0 je ako hračka, ktorá sa môže používať ľahko, ale je to ťažké rozšíriť viac funkcií.

TableRow a TableColumn zdediť od hodnoty predmetu. Ako môžem získať pohľad na rade? Chcem nastaviť rôzne ContextMenu pre každý riadok. Okrem toho, som sa chcete nastaviť ContextMenu na hlavičku stĺpca.

Ako implementovať ho na základe Tabuľky komponent? Nechcem použiť súčasť Zoznam.

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

Najlepšiu odpoveď

0

Aby sa contextMenu pracuje na SwiftUI 3.0 Tabuľka je potrebné ju pridať na každý TableColumn položky. Plus, ak chcete pridať Double Tap podporu je potrebné pridať nezávisle príliš.

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

Ďakujem za odpoveď, ale táto realizácia môže fungovať len na obsah bunky, nedokáže úplne pokryť obsahu celý riadok, a nebude mať vplyv na prázdnu časť linky.
user1397892

V iných jazykoch

Táto stránka je v iných jazykoch

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