如何以编程方式添加NSMenu?

Ast*_*tin 3 macos nsmenu nsmenuitem swift

我没有使用storyboard和xib,只使用了代码. 我想以编程方式添加"编辑"菜单.我的问题是

1)如何显示"编辑"菜单/在评论问题1中需要输入什么代码?

2)从复制和粘贴等快速提供的任何操作?

class TestManager: NSObject {

// ....
    override init() {
        let editMenuItems = [
            NSMenuItem(title: "Cut", action: nil(/* Question 2) */), keyEquivalent: ""),
            NSMenuItem(title: "Copy", action: nil, keyEquivalent: ""),
            NSMenuItem(title: "Paste", action: nil, keyEquivalent: ""),
        ]

        for editMenuItem in editMenuItems {
            self.editMenu.addItem(editMenuItem)
        }

        // Qustion 1) .. show "Edit" Menu
    }
}
Run Code Online (Sandbox Code Playgroud)

Ken*_*ses 6

你没有显示self.editMenu来自哪里.

在任何情况下,您都需要mainMenuNSApplication实例中获取并将菜单项添加到以菜单作为子菜单的菜单项.所以,像:

var editMenuItem = NSMenuItem()
editMenuItem.title = "Edit"
var mainMenu = NSMenu()
mainMenu.addItem(editMenuItem)
mainMenu.setSubmenu(self.editMenu, forItem:editMenuItem)
NSApplication.sharedApplication().mainMenu = mainMenu
Run Code Online (Sandbox Code Playgroud)

我不在Swift工作,因此可能存在一些错误.

至于用于编辑菜单项的操作选择器,最简单的方法是创建一个主菜单NIB来检查它.查看用于现成"编辑"菜单的菜单项的操作选择器.例如,您会发现"复制"项目使用copy:选择器.这可以在Swift中表示为一个字符串,"copy:".