swift - 如何在 SwiftUI 中配置删除和禁用 ContextMenu 按钮?

标签 swift contextmenu swiftui ios13

我尝试在 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
    }

我有什么:

 Not working appearance

我正在寻找什么:(删除调用按钮)

Demo

我会在UIKit中创建一个UIAction,如下所示,但我找不到任何修饰符,或者无论如何无法将其带到SwiftUI :

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

最佳答案

iOS 15 现在支持所有询问的情况

破坏性:(适用于 iOS 15)

.delta 设置为按钮的 role 参数:

Button(role: .destructive) { // 👈 This argument
    // delete something
} label: {
    Label("Delete", systemImage: "trash")
}

Delete Demo

<小时/>

禁用:(适用于 iOS 14.2)

向按钮添加 .disabled 修饰符。

Button {
    // call someone
} label: {
    Label("Call", systemImage: "phone")
}.disabled(true) // 👈 This modifier

Disabled Demo

<小时/>

分隔符:(适用于 iOS 14)

直接使用 Divider() View 。

Divider Demo

<小时/>

完整演示:

Demo <子>⚠️记住!不要不要使用image而不是systemImage在按钮上显示SFSymbol!

关于swift - 如何在 SwiftUI 中配置删除和禁用 ContextMenu 按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58467846/

相关文章:

swift - 当在 Swift Spritekit 的 level1Scene 中发生接触时,如何在我的 GameScene 中运行一个函数?

ios - 以编程方式更改 UIButton 文本并打开一个 url

java - 从 Windows 上下文菜单运行 Java 应用程序

ios - SwiftUI .popover 框架大小不正确

swift - 在带有凹口的横向 iPhone 上,以动画形式滑入表单会导致视觉故障

ios - 导航回 View 时更新 SwiftUI 选择器的最小值和最大值

swift - 在 Swift 中设置文件属性

jquery - 如何根据条件动态更改上下文菜单中的名称

android - 我需要帮助在 android 上制作长按上下文菜单

ios - CMTimeMakeWithSeconds 中的首选时间刻度