小编Jer*_*jko的帖子

在键入NSTextField时过滤NSTable - 自动选择第一行

我有一个NSTextView字段过滤NSTable表作为输入中的用户类型.我已经成功实现了表过滤.

现在,我的目标是自动选择第一个结果(表中的第一行),并允许用户在键入搜索查询时使用箭头键在结果之间移动.在表格中的结果之间移动时,输入字段应保持聚焦.(这与Spotlight的工作方式类似).

这就是应用程序现在的样子:

应用

这是我的ViewController:

import Cocoa

class ViewController: NSViewController, NSTableViewDataSource, NSTableViewDelegate, NSTextFieldDelegate {

    @IBOutlet weak var field: NSTextField!
    @IBOutlet weak var table: NSTableView!

    var projects: [Project] = []

    override func viewDidLoad() {
        super.viewDidLoad()

        projects = Project.all()

        field.delegate = self
        table.dataSource = self
        table.delegate = self
    }

    override func controlTextDidChange(_ obj: Notification) {
        let query = (obj.object as! NSTextField).stringValue

        projects = Project.all().filter { $0.title.contains(query) }

        table.reloadData()
    }

    func numberOfRows(in tableView: NSTableView) -> Int {
        return …
Run Code Online (Sandbox Code Playgroud)

macos cocoa nstextfield nstableview swift

8
推荐指数
1
解决办法
620
查看次数

创建类似于1Password的macOS菜单栏应用

我正在尝试创建一个macOS菜单栏应用程序,该应用程序将文本字段作为第一项。该文本字段将用作搜索栏,用于过滤将显示在其下方的其他项目。

它看起来应该与1password非常相似:

1个密码

这是我设法做到的:

矿

通过创建Status menu包含三个项目的菜单,并为菜单中的第一个项目创建自定义视图,我实现了这一点。

但是,这种方法似乎无法解决我的问题。当按下cmd + A在搜索领域,重点跳转到菜单中的下一个项目。这是的默认行为NSMenu

所以,我的问题是:这是创建类似1Password的应用程序的正确方法还是有更好的方法?

macos xcode menubar nsmenu swift

5
推荐指数
1
解决办法
363
查看次数

如何在 NSMenuItem 中显示搜索栏

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

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

我的问题是:

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

我正在使用 Swift 3 和 Xcode 8.3。谢谢!

xcode cocoa nsmenu swift

3
推荐指数
1
解决办法
745
查看次数

标签 统计

swift ×3

cocoa ×2

macos ×2

nsmenu ×2

xcode ×2

menubar ×1

nstableview ×1

nstextfield ×1