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