ゴトアップデート
アプリケーションデリゲートのコンテンツ( )に()をバインドしたNSTreeControllerコントローラーがあります。また、ウィンドウにコントローラーにバインドされているものがあります。Content ObjectNSTreeNode *NSOutlineView
すべて正常に動作し、コンテンツはアウトラインビューで表示されますが、コントローラーメソッドおよび(など)コントローラーのメソッドは常に返されますが、アイテムはadd(など)できません( 「有効」になっているボタンがコントローラーにバインドされており、このボタンがあります)無効になっています)。addChildinsertcanAddcanAddChildNO
私の間違いはどこにありますか?
アップデート
私の状況についてもう少し情報を提供したいと思います。
MyNodeクラスがあります:
@interface MyNode : NSTreeNode {
NSString* title;
}
@property (retain) NSString* title;
@end
nibファイルにもNSTreeControllerオブジェクトがあります。はIBでにchildrenKeyPath設定され、とは空です。childNodescountKeyPathisLeafKeyPath
コントローラモードはに設定されClass、クラス名はMyNodeです。
コンテンツオブジェクト(コンテンツ配列ではない)は、次のプロパティにバインドされMyDocumentますrootNode。
@property (readonly) MyNode* rootNode;
...
rootNode = [[MyNode alloc] init];
rootNode.title = @"Root";
MyNode *childNode = [[MyNode alloc] init];
childNode.title = @"Child";
[[rootNode mutableChildNodes] addObject:childNode];
そして、TreeControllerにバインドされているNSOulineViewがウィンドウにありcontentますarrangedObjects。コンテンツが表示されます。ノードのタイトルを編集することもできますが、TreeControllerを介して(子)ノードを追加または挿入することはできません。
2つのボタンがあります。「子の追加」と「子の挿入」がTreeControllerのアクションに接続されてaddChildおり、TreeControllerのプロパティにバインドされて有効になっています。ボタンが無効になっています。子ノードを追加または挿入できません。insertChildcanAddChildcanInsertChild
間違いはどこにありますか?
更新2
良いニュースがあります=)
Documentクラスを次のように変更しました。
@interface MyDocument : NSDocument {
NSMutableArray *rootNodes;
MyNode* rootNode;
}
@property (readonly) NSArray* rootNodes;
..
rootNodes = [[NSMutableArray alloc] init];
rootNode = [[MyNode alloc] init];
rootNode.title = @"Root";
MyNode* childNode = [[MyNode alloc] init];
childNode.title = @"Child";
[[rootNode mutableChildNodes] addObject:childNode];
[rootNodes addObject:rootNode];
そして、コンテンツ配列(コンテンツオブジェクトではない)をMyDocument.rootNodesプロパティにバインドすると、すべてが正常に機能します。
addXXXメソッドが単一のオブジェクトで機能しないのはなぜですか?ドキュメントにそれについて何も見つかりません...
そして、なぜTreeControllerはルート要素をrootNodes?に追加できるのでしょうか。rootNodesは、NSArrayではなく、NSMutableArrayです。