2016-12-06 4 views
0

Objective-CでMac OS X用のシステム環境設定パネルを作成しています。パネルには、NSTreeControllerが正しく設定されたNSOutlineViewが含まれています。私はOutlineViewのデリゲートクラスを追加しました。私は自分のoutlineView:viewForTableColumn:item:メソッドを定義しました。NSOutlineViewDataSourceをNSOutlineViewに追加するにはどうすればよいですか?

enter image description here

私は、ツリーコントローラのすべてに新しいオブジェクトを追加すると正常に動作しますが、今はpersistence for expanded itemsを有効にします。私はOutlineViewのデータソースにoutlineView:itemForPersistentObject:outlineView:persistentObjectForItem:を実装する必要がありそのためには、それ以外の場合は私はエラーを取得する:

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

は、私は私の現在の設定与えられたことをどのように行うのですか?

答えて

1

デリゲートとデータソースは同じオブジェクトにすることができます。 OutlineViewDelegateにメソッドを実装し、デリゲートと同じオブジェクトをデータソースに接続します。

+0

私はすでに転記しようとしていましたが、何らかの理由で私のアウトラインビューの項目が表示されなくなりました。 – Maurizio

+0

ああ、心配しないで、今働いている。私は他の間違いをしているに違いない。 – Maurizio

1

NSOutlineViewDataSourceとしてそのクラス(データを提供しているクラス)を宣言しましたか?これらの線に沿って何か:

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

*他の宣言はYOURCLASSは、いくつかの他のものを継承し、この特定のケースでは、単なる例です。

これを宣言したら、バインディングを使用することも、データソースを手動でアウトラインビューに接続することもできます。

+0

私はしませんでしたが、今は ''をクラスmyNodeに追加し、その実装に2つのメソッドを定義しました。次に、Interface BuilderでクラスmyNodeの新しいObjectを作成し、OutlineViewのコンテンツとして設定しました。それはトリックを行うようだ。私はそれに取り組んで、その場合は答えを正しいとマークします。 – Maurizio

関連する問題