如何将 NSOutlineViewDataSource 添加到我的 NSOutlineView?

How do I add a NSOutlineViewDataSource to my NSOutlineView?

我正在为 Mac OS X 在 Objective-C 中编写系统偏好面板。该面板包括一个绑定到正确配置的 NSTreeControllerNSOutlineView。我还为我的 OutlineView 添加了一个委托 class,我在其中定义了我自己的 outlineView:viewForTableColumn:item: 方法。

当我向 Tree Controller 添加新对象时一切正常,但现在我想在 OutlineView 的数据源中启用 persistence for expanded items. To do so I need to implement outlineView:itemForPersistentObject: and outlineView:persistentObjectForItem:,否则我会收到错误消息:

*** NSOutlineView data source ((null)) does not implement outlineView:persistentObjectForItem:

根据我当前的设置,我该怎么做?

您是否将 class(提供数据的 class)声明为 NSOutlineViewDataSource?沿着这些线的东西:

@interface YourClass : NSObject <NSApplicationDelegate, NSWindowDelegate, NSUserNotificationCenterDelegate, NSTableViewDataSource, NSTableViewDelegate, NSOutlineViewDataSource, NSOpenSavePanelDelegate>

*其他声明只是示例,在这种特殊情况下,YourClass 继承自其他几个声明。

声明后,您可以使用绑定,也可以手动将数据源连接到 outlineView。

委托和数据源可以是同一个对象。实现 OutlineViewDelegate 中的方法并将数据源连接到与委托相同的对象。