Objective c 如何在NSOutLineView中获取特定项目?
我目前正在使用Apple的SourceView示例 作为一项任务,我想在右键单击时将应用程序底部的菜单更改为上下文菜单。现在我实现了一个Objective c 如何在NSOutLineView中获取特定项目?,objective-c,cocoa,nsoutlineview,Objective C,Cocoa,Nsoutlineview,我目前正在使用Apple的SourceView示例 作为一项任务,我想在右键单击时将应用程序底部的菜单更改为上下文菜单。现在我实现了一个NSMenuDelegate,并使用menuWillOpen方法在菜单中进行调整 我现在面临的问题是,我无法获得有关我在树中右键单击的对象的信息 我得到了项目的索引,但无法得到项目本身 NSInteger *clickedRow = [myOutlineView clickedRow]; 我试过这个,但什么也没给我 ChildNode *item = [myO
NSMenuDelegate
,并使用menuWillOpen
方法在菜单中进行调整
我现在面临的问题是,我无法获得有关我在树中右键单击的对象的信息
我得到了项目的索引,但无法得到项目本身
NSInteger *clickedRow = [myOutlineView clickedRow];
我试过这个,但什么也没给我
ChildNode *item = [myOutlineView itemAtRow:clickedRow];
我希望有人能帮我
谢谢。您如何确定
单击的路径?
有一点似乎是错误的,那就是您将clickedRow
存储在整数指针(NSInteger*)中,而不是整数中。
因此itemAtRow:
可能使用任意地址而不是实际的行索引来查找项目。
另一件事是,itemAtRow:
返回一个NSTreeControllerNode*
而不是您假设的ChildNode*
。
你应该使用
[[myOutlineView itemAtRow:clickedRow] representedObject];
相反-(NSInteger)单击显示;本机来自NSTableView。为了方便起见,我只是将其存储在自己的变量中。