如何将NSOutlineViewDataSource添加到我的NSOutlineView?

时间:2016-12-06 21:00:56

标签: objective-c nsoutlineview

我正在为Objective-C中的Mac OS X编写一个System Preference窗格。该面板包含NSOutlineView绑定到正确配置的NSTreeController。我还为我的OutlineView添加了一个委托类,我在其中定义了自己的outlineView:viewForTableColumn:item:方法。

enter image description here

当我向树控制器添加新对象时,一切正常,但现在我想启用persistence for expanded items。为此,我需要在OutlineView的数据源中实现outlineView:itemForPersistentObject:outlineView:persistentObjectForItem:,否则我会收到错误:

  

*** NSOutlineView数据源((null))没有实现outlineView:persistentObjectForItem:

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

2 个答案:

答案 0 :(得分:1)

您是否将该类(提供数据的类)声明为NSOutlineViewDataSource?这些方面的东西:

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

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

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

答案 1 :(得分:1)

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

相关问题