gpt4 book ai didi

objective-c - NSOutlineView 如何将上下文菜单连接到委托(delegate)

转载 作者:行者123 更新时间:2023-12-03 17:54:34 28 4
gpt4 key购买 nike

要在右键单击 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];
}

那么让委托(delegate)在此处创建菜单并处理菜单操作的正确方法是什么?

编辑 - 所以子类不知道如何创建菜单,所以我只是这样做了。可以吗?我只是没有看到任何有关如何与代理在线通信的示例代码。

    return [[self delegate] createMenuForItem:item]; 

并且显然在我的大纲 View 委托(delegate)中定义了一个方法来返回 NSMenu。

最佳答案

首先,您应该为除 ([theEvent type] == NSRightMouseDown) 之外的任何事件调用 super。我不确定这是您的问题,但这是一个很好的起点。

其次,这不是委托(delegate)方法,因此它与连接任何委托(delegate)无关。您可以安全地忽略它。

第三,您是否确定已在 Interface Builder 中将大纲 View 的类名称设置为您的子类(您在其中实现上述内容的子类)或(如果您是在代码中创建的) )在代码中指定了您的新子类?

关于objective-c - NSOutlineView 如何将上下文菜单连接到委托(delegate),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15689979/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com