swift - 如何在 NSMenuItem 中显示搜索栏

标签 swift xcode cocoa nsmenu

我正在构建一个 MenuBar Swift Cocoa 应用程序,它显示用户的 github 存储库列表。单击一个后,它会打开一个新的浏览器窗口,其中包含 github.com 上的存储库。

我正在成功加载存储库列表并将它们呈现给 NSMenuItem 对象。现在,我尝试在列表顶部添加一个搜索栏,并根据搜索短语重新呈现项目。

我的问题是:

  1. 在 NSMenu 中显示“搜索栏”的最佳方法是什么?
  2. 是否有标准的方法来“搜索/过滤”NSMenuItem
  3. 我是否应该重新呈现整个菜单(调用 .removeAllItems())并动态添加新项目?或者我应该有两个静态菜单吗?我问这个是因为布局(例如 NSMenuItems)在用户搜索和不搜索时会有所不同。

我使用的是 Swift 3 和 Xcode 8.3。谢谢!

最佳答案

好吧,经过几个月的尝试,我想通了。

  1. 在 NSMenu 中显示“搜索栏”的最佳方法是什么?

    您可以将 NSMenuItem 添加到 NSMenu 并将其 View 设置为 CustomView (searchItem.view = searchView,将 searchItemsearchView 从 Storyboard 拖到 Controller 中)。

  2. 是否有“搜索/过滤”NSMenuItems 的标准方法?

    不,没有。清除项目并重新渲染。

  3. 我是否应该重新呈现整个菜单(调用 .removeAllItems())并动态添加新项目?或者我应该有两个静态菜单吗?我问这个是因为布局(例如 NSMenuItems)在用户搜索和不搜索时会有所不同。

    事实证明,有两个子菜单是一个很好的解决方案。

关于swift - 如何在 NSMenuItem 中显示搜索栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43719450/

相关文章:

ios - 如何使用 alamofire 实现 put http 请求

cocoa - 以正确的方式使用 NSError 和非 BOOL 返回函数

objective-c - 使应用程序在全屏应用程序上弹出

objective-c - 如何在 Objective-C 的 NSTextField 中组合 char 和 int?

swift - UICollectionView 单元格宽度

ios - 无法为 swift spritekit 背景设置完美图像

swift - 将 Swift 序列转换为相邻的对

ios - iOS应用程序因高分而不断崩溃

xcode - TouchUpInside 在 iOS5 上没有响应

ios - 在哪里保存以编程方式创建的文件,以保护它们免受更新?