如何在 SwiftUI 中以编程方式显示菜单

Иск*_*мов 9 swiftui

我需要通过 Swift UI 中的某些事件来扩展菜单。如何才能做到这一点?

struct ContentView: View {
    @State var openMenu = false
    var body: some View {
        Menu("Options") {
            Button("Order Now", action: placeOrder)
            Button("Adjust Order", action: adjustOrder)
            Button("Cancel", action: cancelOrder)
        }
    }

    func placeOrder() { }
    func adjustOrder() { }
    func cancelOrder() { }
}
Run Code Online (Sandbox Code Playgroud)

例如,当 openMenu 变量更改时,菜单会展开

rob*_*off 4

如果您想让菜单出现在屏幕上,那么从 2021 年开始,您无法在纯 SwiftUI 中做到这一点。

UIKit 有showMenu(from:rect:),AppKit 有popUpContextMenu(_:with:for:),但 SwiftUI 没有 API 可以以编程方式显示菜单。

在 SwiftUI 2021 中,您可以使用confirmationDialog(_:isPresented:titleVisibility:presenting:actions:message:)或 已弃用的ActionSheet类型来呈现类似菜单的内容。