1

我是这项技术的新手,我想在父节点子节点上显示不同的上下文菜单..Right click

4

2 回答 2

2

子类化NSOutlineView并实现- (NSMenu *)menuForEvent:(NSEvent *)theEvent.

-(NSMenu*)menuForEvent:(NSEvent*)evt 
{
    NSLog(@"menuForEvent %@ %@",self, [self delegate]);
    NSPoint pt = [self convertPoint:[evt locationInWindow] fromView:nil];
    int row=[self rowAtPoint:pt];
    // create menu ...
    return menu;
} 

在 Mac OS 10.5 及更高版本上,在 nib 中创建 NSMenu 并设置委托并实现:

-(void)menuNeedsUpdate:(NSMenu *)menu
于 2012-10-18T10:35:33.877 回答
1

斯威夫特版本:

class SubclassOutlineView: NSOutlineView {

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

        let menu = NSMenu()
        // ...

        return menu
    }

}

我缺少的一点是item(atRow:,它为您提供了所需的数据源项。发现在这个相关的问题上:

如何将上下文相关菜单添加到 NSOutlineView(即右键菜单)

于 2018-07-14T19:22:53.247 回答