objective-c - 如何获取 NSOutLineView 中的特定项目?

标签 objective-c cocoa nsoutlineview

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

相关文章:

objective-c - 如何同步运行WebView.mainFrame.loadRequest?

Swift:在 NSOutlineView 中拖放

cocoa - 没有 NIB 的 NSOutlineView 源列表

cocoa - 如何编辑 NSOutlineView 项目

cocoa - Mac 应用程序沙盒 - NSHomeDirectory() 问题

c++ - 混合 C++ 和 Objective-C

iphone - 数据服务器到 iPhone 并返回

ios - 介于 0.0 和 1.0 之间的界限值是什么意思?

java - 将 Java 运行时嵌入到沙盒 Cocoa Mac 应用程序中

c++ - 在 Mac OS 上禁用窗口