我目前正在玩Apple的SourceView示例。
作为一项任务,我想将应用程序底部的菜单更改为右键单击的上下文菜单。现在我已经实施了NSMenuDelegate
并使用menuWillOpen
方法在菜单中进行调整。
我现在面临的问题是我无法获得有关我在树中右键单击的对象的信息。
我得到了该项目的索引,但我无法获得该项目。
NSInteger *clickedRow = [myOutlineView clickedRow];
我试过这个,但它没有给我任何东西。
ChildNode *item = [myOutlineView itemAtRow:clickedRow];
我希望有人可以帮助我。
感谢。
答案 0 :(得分:2)
如何确定clickedRow
?
有一点似乎是错误的是,您将clickedRow
存储在整数指针(NSInteger *)中而不是整数。
所以itemAtRow:
可能使用任意地址而不是实际行索引来查找项目
另一件事是,itemAtRow:
正如您所假设的那样返回NSTreeControllerNode*
而不是ChildNode*
。
你应该使用
[[myOutlineView itemAtRow:clickedRow] representedObject];
代替