要在右键单击 NSOutlineView 时显示上下文菜单,您必须对其进行子类化并覆盖:
- (NSMenu *)menuForEvent:(NSEvent *)theEvent {
NSPoint pt = [self convertPoint:[theEvent locationInWindow] fromView:nil];
id item = [self itemAtRow: [self rowAtPoint:pt]];
// Only the delegate knows how to create a menu based on the item
return [self createMenuFor: item];
}
那么让代理在这里创建菜单并处理菜单操作的正确方法是什么?
编辑 - 所以子类不知道如何创建菜单,所以我就这样做了。可以吗?我只是没有看到任何关于如何与代表在线交流的示例代码。
return [[self delegate] createMenuForItem:item];
并且显然在我的大纲视图委托中定义了一个方法来返回一个 NSMenu。