問題タブ [nstreecontroller]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
515 参照

objective-c - NSOutlineView -- 複数のソースを組み合わせる

私のアプリには、NSOutlineViewからデータを取得する がNSTreeControllerあり、これはコア データ モデルからデータを取得します。

私が今やりたいことは、グループの見出しと、場合によっては追加の行をアウトライン ビューに追加することです。これは明らかに、モデルの外に存在し、ビューの一部であるべきものです。しかし、これについて頭を悩ませている限り、基になるモデルを変更せずにアウトラインビューにこれらのものを表示させる方法は考えられません。これは明らかに大きな問題です。

よろしくお願いいたします。ここで明らかな何かが欠けているような気がします...

0 投票する
8 に答える
9709 参照

objective-c - NSOutlineView: 開示三角形とインデントを削除

私はプロジェクトに NSOutlineView を使用していますが、2 つのことを理解できないようです。

  • ツリー ノードの開閉用三角ボタンを削除する方法。iTunes などのアプリでは、次のことができるようです。

代替テキスト

これに使用されるある種の NSOutlineView Delegate メソッドはありますか? それともサブクラスが必要ですか?

  • アイテムのインデントを無効にする方法。setIndentationPerLevel:を使用して 0 に設定し、Interface Builder で列のインデントを 0 に変更しようとしましたが、効果がないようです。
0 投票する
1 に答える
270 参照

cocoa - 各親アイテムの子 NSTableView 設定をどのように保存しますか?

NSTableView親の各アイテムの の設定を (理想的にはその自動保存機能を活用して) 保存する最良の方法は何NSTreeControllerですか? 私は基本的に、iTunes が各プレイリストの列設定を個別に保存する方法を再現しようとしています。

ただし、多くの列があり、個々の列のサイズなどをすべて手動で保存したくありません。Core Data も使用しており、既存のデータ モデルを使用してこの情報を保持するソリューションが大好きです。

アップデート

の列設定の表現を簡単に保存および読み取ることができるいくつかのコード ( Daniel Jalkut からの a ) を見つけました。Categoryそのため、現在そのエンティティのビューの設定を保存している Core Data エンティティにバイナリ属性を作成しました。NSDictionaryNSTableView

私ができるようにしたいのは、エンティティの各インスタンスが選択されると、設定を自動的に取得することです。で Key-Value Observation を使用してこれを実行しようとしましたNSTreeControllerが、残念ながら適切な通知が得られません。新しいノードの設定で上書きする前に、前のノードの設定を保存できるように、切り替える項目を知りたいです。

@"selection"@"selectedObjects"、および を、見つけ@"selectedIndexPaths"られるすべての引数で観察しようとしましたが、どれも適切に機能していないようでした。適切なタイミングで通知を受け取りますが、プロパティの変更によって送信される辞書optionsに有用な情報がありません。"change"

0 投票する
1 に答える
282 参照

cocoa - NSTreeController 追加された子を取得

NSTreeController -(void)addChild:(id)senderが呼び出されたときに、作成されたものを取得する方法はありNSManagedEntityますか?

ドキュメントには、このメソッドの結果が次のループ実行まで延期されることが記載されています。

0 投票する
2 に答える
963 参照

cocoa - NSOutlineController を使用して NSTreeController からすべての要素を削除する方法

NSTreeControllerwithを使用しNSOutlineControllerて、1parent-1child 階層でコンテンツを表示しています。私の構造は次のようなものです:
- 親
- 子
- 親
- 子

ユーザーが更新ボタンを押すと、すべてのノードを削除して再度補充したいと思います。

しかし、何も機能していないようです。

ビンジングNSTreeControllerNSArrayController役立つと思いますが、バインドする手順が本当にわかりませNSArrayControllerNSTreeController--- NSOutlineController

0 投票する
1 に答える
426 参照

objective-c - Cocoaバインディングを使用した編集可能なOutlineView

アイテムを編集できるように、NSOutlineView(またはNSTableView)をどのようにバインドしますか?編集可能なフィールドがあることは知っていますが、使用方法がわからないので、何か助けがあればいいのですが。NSArrayにバインドするNSTreeControllerがあります。ありがとう。

0 投票する
1 に答える
579 参照

objective-c - エンティティを NSTreeController の子としてバインドする正しい方法

間に関係を持つ 2 つの別個のエンティティにバインドされてNSOutlineviewいるwhoを に取り込む方法についての私の理解は正しいですか。NSTreeController

MyNSTreeControllerには、 my にバインドされた managedObjectContext がありますappDelegate。私のこれはclientObject Controllerという名前のエンティティです。Myは(およびclientの) clientCompanyにバインドされており、これにより myに会社名のリストが正しく入力されます。NSOutlineViews tableColumnNSTreeControllerkey path NSOutlineView

2 番目のエンティティーprojectsには、クライアント内のclientChildというプロパティーに逆バインドされたprojectParentという関係プロパティーがあります。この関係を通じて、関連するclientCompanyを親として持つ関連するプロジェクトエントリで my の子を構成したいと考えています。NSTreeController

これを試みるために、私はclientChildchildren key pathを myに作成し、同じコントローラの my をクライアントエンティティのclientChildNSTreeControllerに「selected」としてバインドしました。content set key pathController Key

この方法とさまざまな組み合わせは機能しないようで、さまざまなエラーが発生します。content setプログラムが起動時にエラーなしで実行され、outlineview エントリの横に開く/閉じるアイコンが表示される最後の ' ' バインド ステップを省略した場合にのみ、希望どおりに入力されていることが示されます。エントリの 1 つを開こうとすると、プロジェクトエンティティがclientChildプロパティに準拠した KVC ではないことを示すエラーが生成されます。バインディングを何度も調べましたが、問題が見つからないようです。

0 投票する
2 に答える
126 参照

xcode - IB と 2 つのエンティティの関係を使用して OutlineView を設定する方法はありませんか?

以前に他の人でこの質問に触れましたが、以前の質問への回答を書いた後、なぜこれが不可能なのか疑問に思いました-または、可能性があるという事実を見逃していますか?

Interface Builderが、さまざまなメソッド、デリゲート、およびデータ ソースをグラフィカルにリンクするのに非常に優れていることを考えると、親子関係が設定されているモデルでOutlineView作成された 2 つのエンティティを使用して、直接的なグラフィカルな手段がない可能性があります(私は信じています)。 ) 子ノードが?Core Dataの下にリストされる親ノードを定義するのに十分な情報があります。outlineview

これは、2 つの異なる情報源を保存し、後でそれらの関係を表示するための非常に論理的な方法であると考えているため、混乱します。現時点では、 を使用せずNSTreeControllerに、自分の を使用してdatasource、現在の能力をはるかに超える領域に足を踏み入れようとしています。

0 投票する
1 に答える
325 参照

objective-c - mouseDownが頻繁に中断された後に更新されるNSTreeControllerのselectionIndexPaths

問題の背景:

NSOutlineViewがあり、すべてのtableColumnがプログラムでNSTreeControllerのarrangedObjectsにバインドされているため、selectionIndexPathsをバインドする必要はありません。NSTreeControllerのarrangedObjectsのソースはmutableArrayです。- (void)insertObject:(id)object atArrangedObjectIndexPath:(NSIndexPath *)indexPath;メインスレッドで実行することにより、すべてのノードを動的にNSTreeControllerに追加しています。NSOutlineViewのmouseDownイベントを次のようにオーバーライドしました。 - (void)mouseDown:(NSEvent *)event { /*...myMethods...*/ [super mouseDown:event]; }

問題:

ノードが非常に高速に追加され、outlineViewでmouseDownイベントを実行すると、次の状況が頻繁に発生します。

TreeControllerにノードを追加するスレッドは、mouseDownイベントによって呼び出されるシーケンス(おそらく)を中断するため、そのinsertObject: atArrangedObjectIndexPath:前に呼び出されsetSelectionIndexPaths:ます。そのため、outlineViewの新しい選択は消え、treeControllerには古いバージョンのselectedIndexPathsが残っています

私は1つの部分的な解決策を試しました:outlineView全体を変更できないように、insertObject:メソッドを(で)ブロックしましたが、スレッドの競合が発生し、アプリがフリーズすることがよくあります。@synthesized(outlineView)

選択範囲が消える問題を解決する方法はありますか?

0 投票する
1 に答える
224 参照

cocoa - アウトライン ビューで NSXMLDocument を表示するときに TreeController のコンテンツ オブジェクトを設定するにはどうすればよいですか

アウトライン ビューで NSXMLDocument を表示したいと思います。ありがたいことに、apple には「NSXML オブジェクトでツリー コントローラを使用する」というドキュメントがあります。

しかし、私が得られなかったのは、TreeController のコンテンツ オブジェクトをどのように設定したかということです。

まず、表示したい NSXMLDocument に「Bind to」を設定し、その rootElement に「Model Key Path」を設定します。しかし、それはうまくいきません。

プロパティとして NSXMLDocument を持つオブジェクトに「バインド先」を設定し、「モデル キー パス」を NSXMLDocument.rootElement に設定する必要があることがわかりました。

では、なぜですか?