कैसे लागू करने के लिए एक संदर्भ मेनू करने के लिए SwiftUI तालिका पंक्ति?

0

सवाल

मैंने पाया है कि नए तालिका घटक के SwiftUI 3.0 की तरह है और एक खिलौना है, जो आसानी से किया जा सकता है, लेकिन यह मुश्किल है का विस्तार करने के लिए और अधिक कार्य करता है ।

TableRow और TableColumn वारिस मान से वस्तु. कैसे कर सकते हैं मैं देखने की एक पंक्ति? मैं सेट करना चाहते हैं एक अलग ContextMenu प्रत्येक पंक्ति के लिए. इसके अलावा, मैं सेट करना चाहते हैं ContextMenu के लिए स्तंभ शीर्ष लेख में है ।

कैसे इसे लागू करने के आधार पर तालिका घटक? मैं नहीं चाहता करने के लिए सूची का उपयोग करें घटक है ।

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

सबसे अच्छा जवाब

0

आदेश में करने के लिए है contextMenu पर काम कर SwiftUI 3.0 तालिका यह आवश्यक है करने के लिए इसे जोड़ने के लिए हर TableColumn आइटम. इसके अलावा, यदि आप चाहते हैं जोड़ने के लिए Double Tap यह समर्थन जोड़ने के लिए आवश्यक है, यह स्वतंत्र रूप से भी.

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

अपने जवाब के लिए धन्यवाद, लेकिन इस कार्यान्वयन केवल काम कर सकते हैं की सामग्री पर सेल, नहीं पूरी तरह से कवर सामग्री की पूरी लाइन है, और नहीं ले जाएगा प्रभाव के लिए रिक्त लाइन का हिस्सा.
user1397892

अन्य भाषाओं में

यह पृष्ठ अन्य भाषाओं में है

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