Ich habe versucht, die Schaltfläche in der zu konfigurieren contextMenu
, aber es funktioniert nicht.
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
}
Was ich habe:
Was ich suche: ( Tasten löschen und aufrufen )
Ich würde UIAction
wie folgt erstellen, UIKit
aber ich kann keinen Modifikator finden oder sowieso, um dies auf die SwiftUI zu bringen :
let delete = UIAction(title: "Remove", image: UIImage(systemName: "trash"), attributes: .destructive) { action in
// remove it
}
swift
contextmenu
swiftui
ios13
Mojtaba Hosseini
quelle
quelle
Antworten:
Das Umschalten eines Booleschen Werts, der bestimmt, ob die Ansicht sichtbar ist, funktioniert:
Da das Kontextmenü an das
Text
entfernte angehängt ist , wird es natürlich dauerhaft entfernt, es sei denn, Sie haben etwas anderes (z. B. aButton
), das den Booleschen Wert umschaltet (textVisible
in diesem Fall).Bearbeiten : OP wollte wissen, wie Schaltflächen im Kontextmenü deaktiviert / destruktiv gemacht werden (graue / rote Vordergrundfarben), aber ich glaube, dass SwiftUI ab dem 20. Oktober 2019 einen Fehler hat, der keine Schaltflächen im Kontext zulässt Menü, um eine andere Farbe als Rot zu haben. Andernfalls sollte die Schaltfläche destruktiv
.disabled(true)
sein, wenn Sie die Schaltfläche so einstellen, dass sie eine graue Farbe erhält und deaktiviert wird. Wenn Sie die Vordergrundfarbe der Schaltfläche auf rot (foregroundColor(.red)
) setzen.quelle