MenuBuilder

一个用于创建 NSMenu 的函数构建器,在精神上类似于 SwiftUI 的 ViewBuilder

使用示例 (请参阅演示或阅读文档了解更多详情)

let menu = NSMenu {
  MenuItem("Click me")
    .onSelect { print("clicked!") } 
  MenuItem("Item with a view")
    .view {
      MyMenuItemView() // any SwiftUI view
    }
  SeparatorItem()
  MenuItem("About") {
    // rendered as disabled items in a submenu
    MenuItem("Version 1.2.3")
    MenuItem("Copyright 2021")
  }
  MenuItem("Quit")
    .shortcut("q")
    .onSelect { NSApp.terminate(nil) }
}

// later, to replace the menu items with different/updated ones:
menu.replaceItems {
  MenuItem("Replaced item").onSelect { print("Hello!") }
}

请注意,目前没有办法保留现有的菜单项,尽管应该可以实现这个功能——如果您需要更新支持,欢迎提出 issue 或 PR!

更新日志

v3.0.0

v2.1.0

查看新的 API 文档! https://menubuilder.jedfox.com

新功能

Bug修复

v2.0.0

v1.3.0

修复 & 清理

v1.2.0

添加循环支持

v1.1.0

添加条件支持

v1.0.1

添加许可证,清理代码

v1.0.0

初始版本!

贡献

打开 MenuBuilder.xcworkspace 以同时查看包和演示。 欢迎 PR 和 issue!