You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SwiftUI for macOS:如何移除文件菜单中的关闭菜单项?

在SwiftUI中移除Mac应用文件菜单的“关闭”菜单项

首先明确:SwiftUI里没有专门对应“关闭”菜单项的CommandGroupPlacement,没法直接单独移除这一项,得通过替换整个文件菜单分组的方式实现。

具体做法是在App的commands修饰符里,用CommandGroup(replacing: .fileMenu)自定义文件菜单的内容,完全跳过“关闭”按钮即可。

举个代码例子:

@main
struct YourMacApp: App {
    var body: some Scene {
        WindowGroup {
            ContentView()
        }
        .commands {
            CommandGroup(replacing: .fileMenu) {
                // 自定义你需要的文件菜单选项,比如保留新建、打开、保存这些
                Button("New") {
                    // 实现新建逻辑
                }
                Button("Open...") {
                    // 实现打开逻辑
                }
                Divider()
                Button("Save") {
                    // 实现保存逻辑
                }
                Button("Save As...") {
                    // 实现另存为逻辑
                }
                Divider()
                Button("Page Setup...") {
                    // 实现页面设置逻辑
                }
                Button("Print...") {
                    // 实现打印逻辑
                }
                // 这里不添加Close按钮,就移除了原有的关闭菜单项
            }
        }
    }
}

如果你想保留系统默认的大部分文件菜单选项,又不想手动写所有按钮逻辑,其实可以先调用DefaultCommands.FileMenu(),再手动移除其中的“关闭”项,但这种方式需要依赖NSMenu的桥接操作,不属于纯SwiftUI的实现方式,不如上面自定义菜单来得稳妥。

内容的提问来源于stack exchange,提问作者Artur Hellmann

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 21:25:35