हटाएं और SwiftUI में अक्षम के लिए ContextMenu बटन को कैसे कॉन्फ़िगर करें?


10

मैंने बटन को अंदर कॉन्फ़िगर करने की कोशिश की contextMenu, लेकिन यह काम नहीं कर रहा है।

Text("A label that have context menu")
    .contextMenu {
        Button(action: {
            // remove it
        }) {
            Text("Remove")
                .foregroundColor(.red) // Not working
            Image(systemName: "trash")
        }.disabled(true) // Not working
    }

जो मेरे पास है:

 कामकाजी रूप नहीं

मैं क्या चाह रहा हूं: ( बटन हटाएं और कॉल करें )

डेमो

मैं UIActionनिम्नलिखित की तरह एक निर्माण करूँगा , UIKitलेकिन मैं इसे किसी भी संशोधक या किसी भी तरह से स्विफ्टयूआई में नहीं ला सकता :

let delete = UIAction(title: "Remove", image: UIImage(systemName: "trash"), attributes: .destructive) { action in
    // remove it
}

क्या आपको जवाब मिला?
एंड्रिया मिओटॉ

ऐसा लगता है कि यह (शुद्ध स्विफ्टयूआई के साथ) अभी तक संभव नहीं है।
मोजतबा होसैनी

जवाबों:


-2

एक बूलियन टॉगल करना जो यह निर्धारित करता है कि क्या दृश्य काम करता है:

struct ContentView: View {
    @State var textVisible = true
    var body: some View {
        Group {
            if textVisible {
                Text("Hello World")
                .contextMenu {
                    Button(action: {
                        self.textVisible = false
                    }) {
                        HStack {
                            Text("Remove")
                            Image(systemName: "trash")
                        }
                    }
                }
            }
        }
    }
}

बेशक, चूंकि संदर्भ मेनू Textको हटा दिया गया था, इसलिए इसे स्थायी रूप से हटा दिया जाएगा, जब तक कि आपके पास कुछ और (जैसे Button) बूलियन टॉगल न हो (textVisible इस मामले में)।

संपादित करें : ओपी यह जानना चाहता था कि संदर्भ मेनू में बटन कैसे निष्क्रिय किए जा सकते हैं / विनाशकारी (ग्रे / लाल अग्रभूमि रंग), लेकिन मेरा मानना ​​है कि 20 अक्टूबर 2019 तक, स्विफ्टयूआई में एक बग है जो संदर्भ में किसी भी बटन की अनुमति नहीं देता है। लाल के अलावा किसी भी रंग का मेनू। अन्यथा, बटन को सेट करने के रूप में .disabled(true)इसे एक ग्रे रंग देना चाहिए और इसे अक्षम करना चाहिए, और बटन के अग्रभूमि रंग को लाल ( foregroundColor(.red)) में सेट करना बटन को विनाशकारी बनाना चाहिए।


आप का जवाब है ज्यादातर ठीक है। बस एल्से हिस्सा जरूरी नहीं है।
E.Coms

1
आपने मेरे प्रश्न को गलत समझा। मैं बटन को विनाशकारी (लाल) , या अक्षम
Mojtaba Hosseini

1
@MojtabaHosseini गलत व्याख्या के लिए क्षमा करें! मुझे लगता है कि स्विफ्टयूआई में अभी एक बग है जहां संदर्भ मेनू विकल्प रंग नहीं बदल सकते हैं, वे केवल काले हो सकते हैं। बग रिपोर्ट दर्ज करना आपको फायदेमंद हो सकता है।
RPatel99

नीचे जाने वालों के लिए: मैंने अपना उत्तर पोस्ट करने के बाद ओपी ने अपना प्रश्न बदल दिया। प्रश्न के प्रारंभिक शब्दांकन ने ऐसा प्रतीत किया कि ओपी को केवल संदर्भ मेनू के साथ किसी दृश्य को हटाने का तरीका जानने की आवश्यकता थी। मैं अपना उत्तर नहीं हटा रहा हूँ क्योंकि यह इस प्रश्न का एकमात्र उत्तर है और मुझे अभी भी लगता है कि यह प्रश्न के लिए प्रासंगिक है और लोगों के लिए उपयोगी हो सकता है।
RPatel99
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.