将 NSMenuItem 添加到 NSApp.MainMenu 不插入新菜单项

问题描述 投票:0回答:2

我使用以下代码以编程方式添加新的菜单项

override func viewDidLoad() {
    let mainMenu = NSApp.mainMenu
    let myMenu = NSMenuItem(title: "MenuTitle", action: nil, keyEquivalent: "")
    mainMenu!.addItem(myMenu)
}

但这并没有添加新的菜单项。

swift macos nsmenu nsmenuitem nsapplication
2个回答
1
投票

您需要设置 menuItem 子菜单并向其中添加新菜单项,如下所示:

override func viewDidLoad() {
    super.viewDidLoad()

    let menuItem = NSMenuItem(title: "SubMenu", action: nil, keyEquivalent: "")

    let subMenu = NSMenu(title: "SubMenu")
    subMenu.addItem(withTitle: "abc", action: #selector(abc), keyEquivalent: "")

    menuItem.submenu = subMenu

    NSApp.mainMenu?.addItem(menuItem)
}

@objc func abc(_ menuItem: NSMenuItem) {
    print(#function)
}

0
投票
class AppDelegate: NSObject, NSApplicationDelegate, NSToolbarDelegate {
  func applicationDidFinishLaunching(_ notification: Notification) {
    let app = NSApplication.shared
    app.mainMenu = app.customMenu
    app.delegate = self
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.