我目前正在玩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/

10-10 10:34