SwiftUI'de ContextMenu düğmelerini silmek ve devre dışı bırakmak için nasıl yapılandırılır?


10

Düğmeyi içindeki yapılandırmaya çalıştım contextMenu, ama çalışmıyor.

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
    }

neyim var:

 Çalışmayan görünüm

Ne arayan kulüpler: ( silme ve çağrı düğmeleri)

gösteri

UIActionAşağıdakine benzer bir şey yaratacağım , UIKitancak SwiftUI'ye getirmek için herhangi bir değiştirici veya yine de bulamıyorum :

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

bir cevap buldun mu
Andrea Miotto

Henüz (saf SwiftUI ile) mümkün değil gibi görünüyor.
Mojtaba Hosseini

Yanıtlar:


-1

Görünümün görünür olup olmadığını belirleyen bir mantıksal geçiş yapmak çalışır:

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")
                        }
                    }
                }
            }
        }
    }
}

Elbette, içerik menüsü Textkaldırılan öğeye eklendiğinden Button, boole'yi değiştiren başka bir şey (örneğin a ) yoksa ( textVisiblebu durumda) kalıcı olarak kaldırılır .

Düzenleme : OP, bağlam menüsündeki düğmelerin nasıl devre dışı / yıkıcı (gri / kırmızı ön plan renkleri) yapılacağını bilmek istedi, ancak 20 Ekim 2019 itibarıyla SwiftUI'nin bağlamda herhangi bir düğmeye izin vermeyen bir hataya sahip olduğuna inanıyorum menüsünde kırmızı dışında herhangi bir renk olabilir. Aksi takdirde, düğmeyi .disabled(true)gri bir renk verecek şekilde ayarlamak ve devre dışı bırakmak ve düğmenin ön plan rengini kırmızı ( foregroundColor(.red)) yapmak düğmeyi yıkıcı hale getirmelidir.


Cevap çoğunlukla iyi. Sadece Else kısmı gerekli değildir.
E.Coms

1
Sorumu yanlış anladın. Düğmeleri yıkıcı (kırmızı) veya devre dışı (gri ve etkin değil)
Mojtaba Hosseini

1
@MojtabaHosseini Yanlış yorumladığınız için özür dileriz! SwiftUI'nin şu anda bağlam menüsü seçeneklerinin renkleri değiştiremediği, sadece siyah olabileceği bir hata olduğunu düşünüyorum. Hata raporu göndermenin yararlı olduğunu düşünebilirsiniz.
RPatel99

Aşağıdakilere: OP, cevabımı gönderdikten sonra sorusunu değiştirdi . Sorunun ilk ifadesi, OP'nin yalnızca bir bağlam menüsüyle bir görünümün nasıl silineceğini bilmek için gerekli olduğunu gösterdi. Bu sorudaki tek cevap olduğu için cevabımı silmiyorum ve hala soru ile ilgili olduğunu ve insanlar için yararlı olabileceğini düşünüyorum.
RPatel99
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.