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
相关产品推荐
相关产品推荐

