我目前正在玩Apple的SourceView示例。
作为一项任务,我想右键单击将应用程序底部的菜单更改为上下文菜单。现在,我已经实现了NSMenuDelegate
并使用menuWillOpen
方法在菜单中进行调整。
我现在面临的问题是我无法获得有关在树中右键单击的对象的信息。
我获得了该项目的索引,但我无法获得该项目本身。
NSInteger *clickedRow = [myOutlineView clickedRow];
我尝试了此操作,但没有任何效果。
ChildNode *item = [myOutlineView itemAtRow:clickedRow];
我希望有人可以在这里帮助我。
谢谢。
最佳答案
您如何确定clickedRow
?
似乎错误的一件事是,您将clickedRow
存储在整数指针(NSInteger *)中,而不是整数中。
因此itemAtRow:
可能使用任意地址而不是实际的行索引来查找项目。
另一件事是,itemAtRow:
返回的是NSTreeControllerNode*
,而不是您假设的ChildNode*
。
你应该用
[[myOutlineView itemAtRow:clickedRow] representedObject];
代替
关于objective-c - 如何在NSOutLineView中获取特定项目?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16102072/