基于NSTableViewCell的上下文菜单

问题描述 投票:9回答:7

我想将一个上下文菜单放到NSTableView上。这部分完成了。我要做的就是根据右键单元格的内容显示不同的菜单条目,而不显示特定列的上下文菜单。

这是:

第0列,第1列没有上下文菜单

所有其他单元格应该具有如下的上下文菜单:

第一个条目:“删除”samerow.column1.value 第二个条目:“保存”samecolumn.headertext

希望问题很清楚..

谢谢

-编辑-

右边的那个是上下文菜单对于任何给定单元格应该是什么样子。

objective-c cocoa contextmenu nstableview nstableviewcell
7个回答
0
投票

这是我发现的自定义/动态NSMenu最简单的方法,它也保留了系统外观(蓝色选择边框)。子类NSTableView并在menu(for:)设置菜单。

重要的是在表视图上设置菜单,但从super调用返回菜单。

override func menu(for event: NSEvent) -> NSMenu? {
    let point = convert(event.locationInWindow, from: nil)
    let clickedRow = self.row(at: point)
    var menuRows = selectedRowIndexes

    // The blue selection box should always reflect the
    // returned row indexes.
    if menuRows.isEmpty || !menuRows.contains(clickedRow) {
        menuRows = [clickedRow]
    }

    // Build your custom menu based on the menuRows indexes
    self.menu = <#myMenu#>

    return super.menu(for: event)
}
© www.soinside.com 2019 - 2024. All rights reserved.