1

我目前正在使用 Apple 的 SourceView 示例。

作为一项任务,我想在右键单击时将应用程序底部的菜单更改为上下文菜单。现在我已经实现了一个NSMenuDelegate并使用该menuWillOpen方法在菜单中进行调整。

我现在面临的问题是我无法获取有关我在树中右键单击的对象的信息。

我得到了项目的索引,但我无法得到项目本身。

NSInteger *clickedRow = [myOutlineView clickedRow];

我试过这个,但它没有给我任何东西。

ChildNode *item = [myOutlineView itemAtRow:clickedRow];

我希望有人可以在这里帮助我。

谢谢。

4

1 回答 1

2

你如何确定clickedRow
似乎错误的一件事是,您将 存储clickedRow在整数指针(NSInteger*) 而不是整数中。
因此itemAtRow:可能使用任意地址而不是实际的行索引来查找项目。
另一件事是,它itemAtRow:返回一个NSTreeControllerNode*而不是ChildNode*你假设的一个。
你应该使用

[[myOutlineView itemAtRow:clickedRow] representedObject];

反而

于 2013-04-19T10:33:06.660 回答