在 SwiftUI 中更改 macOS 应用的主菜单需要两个步骤:
- 创建一个新的菜单
可以通过创建一个 NSMenu
对象来创建一个新的菜单。可以在 init()
方法中创建菜单,然后添加所需的菜单项。
class MyMenu: NSMenu {
init() {
super.init(title: "My Menu")
addItem(withTitle: "Item 1", action: #selector(item1Clicked), keyEquivalent: "")
addItem(withTitle: "Item 2", action: #selector(item2Clicked), keyEquivalent: "")
}
@objc func item1Clicked() {
print("Item 1 clicked")
}
@objc func item2Clicked() {
print("Item 2 clicked")
}
}
- 将菜单设置为主菜单
可以在 AppDelegate
中通过向应用程序对象的 mainMenu
属性中添加新菜单来将菜单设置为主菜单。还可以使用 NSApplication.shared.setMainMenu(_: NSMenu)
方法来设置主菜单。
@main
struct MySwiftUIApp: App {
@NSApplicationDelegateAdaptor(AppDelegate.self) var appDelegate
var body: some Scene {
WindowGroup {
ContentView()
}
}
}
class AppDelegate: NSObject, NSApplicationDelegate {
func applicationDidFinishLaunching(_ notification: Notification) {
let myMenu = MyMenu()
NSApplication.shared.mainMenu = myMenu
}
}
请注意,在 macOS 应用中增加主菜单时,首先需要创建一个 AppDelegate
类,并将其指定为 @NSApplicationDelegateAdaptor
的代理,以确保应用程序知道要使用该类作为其代理。