Переключение логического значения, определяющего, является ли представление видимым, работает:
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
).
Edit : OP хотел знать, как отключить кнопки в контекстном меню /деструктивный (серый / красный цвета переднего плана), но я считаю, что по состоянию на 20 октября 2019 года в SwiftUI есть ошибка, из-за которой никакие кнопки в контекстном меню не имеют какого-либо цвета, кроме красного. В противном случае установка кнопки на .disabled(true)
должна придать ей серый цвет и отключить ее, а установка цвета переднего плана на красный (foregroundColor(.red)
) должна привести к разрушению кнопки.