問題タブ [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 に答える
808 参照

objective-c - 2つの異なるコアデータNSManagedObjectエンティティを持つNSTreeController

iOSアプリをMacに移植していて、エンティティの階層を管理するためにNSTreeControllerをセットアップしたいと考えています。この階層には、グループとアイテムの2つの異なるNSManagedObjectタイプがあり、1対多の関係(1つのグループから多くのアイテム)があります。ただし、NSTreeControllerの設定に問題があります。エラーメッセージが表示されます:

NSTreeControllerは、子がそれ自体を参照する1つのタイプのNSManagedObjectでセットアップすることを目的としているようであり、子を別の種類のオブジェクトにすることは機能しません。これは正しいです?もしそうなら、軽量の移行を使用して新しいデータモデルを古いデータモデルから適切に移行できるようにしながら、これを修正するために何をする必要がありますか?2種類のNSManagedObjectsを使用してNSTreeObjectを実際に実行できる場合、どのように設定すればよいですか?

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

objective-c - 選択した NSTreeController オブジェクトのすべての子、孫、および孫を取得するにはどうすればよいですか

私はこの単純化されたモデルを持っています: http://i.imgur.com/EAug3.png

これらの要素を NSOutlineView で並べ、NSTreeController で制御しています。

だから私はいくつかのダミーデータを作成しました:

問題は次のとおりです。Folder1 を選択した場合は Element1、Element2、Element3 を保持し、Subfolder1 を選択した場合は Element1 と Element2 を保持する配列を取得するにはどうすればよいですか?

私の最初のアプローチは、NSTreeController オブジェクトのカスタム プロパティにバインドされた新しい NSArrayController を作成することでしたが (そのためのクラスを派生させました)、そのプロパティは 1 回だけ呼び出され、その後は更新されませんでした。私の2番目のアプローチは、フェッチ述語を書くことでしたが、うまくいきませんでした... :(

何か案は?

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

cocoa - ビュー ベースの NSOutlineView 親ビューの上に子ビューを描画する

NSOutlineView + NSTreeController + Core Data を使用すると、アウトライン ビューのレイアウトが奇妙になります。下の画像でわかるように、アウトライン ビューは、「親」が展開されたときに「子」用のスペースを作成しますが、代わりに「親」の上に「子」を描画します。押されたときにビューを正しく描画する [outlineVIew reloadData] メソッドを呼び出すボタンを作成しました。

コア データ モデル:

  • 子供
  • 名前

私のxibセットアップ:

  • NSOutlineViewデリゲートはファイルの所有者に設定されています
  • NSTreeController はドキュメントの Core Data コンテキストにバインドされています
  • NSTableColumn は NSTreeController.arrangedObjects にバインドされています
  • NSTextField は NSTableCellView.objectValue.name にバインドされています

NSPersistentDocument クラス:

結果:

親が折りたたまれたアウトライン ビュー

親が折りたたまれたアウトライン ビュー

親が展開され、子が上に描画されたアウトライン ビュー

親が展開され、子が上に描画されたアウトライン ビュー

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

cocoa - NSTreeController の子をコア データにバインドする方法は、to-many-relationship を注文しましたか?

Apple は、Lion の Core Data に順序付けられた多対多の関係を導入しました。1:1-object-relation、1:1-parent-relation、および順序付けられた to-many-relationship の子を持つ TreeNode という名前のエンティティを作成しました。

次にNSTreeController、子のキー パスを TreeNode.children に設定します。アプリケーションを実行すると、最初のレベルの要素のみが表示されます。だから子供は働かない。children は順序付けられた対多の関係であるため、対応するクラスにはNSOrderedSet子があります。カスタムメソッドを追加しました

動作する TreeNode に。そのトピックに関するドキュメントは見つかりませんでした。NSTreeController順序付けられた対多関係にバインドするとき、それは本当に進むべき道ですか? 前もって感謝します。

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

nspredicate - NSSearchField で NSTreeController をフィルタリングする

この質問は以前に尋ねられたようですが、答えはありませんでした。NSSearchField で NSTreeController をフィルタリングすることは可能ですか? もしそうなら、どのように?

ありがとう!

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

objective-c - NSTreeControllerのaddメソッドとaddChildメソッド

ゴトアップデート

アプリケーションデリゲートのコンテンツ( )に()をバインドしたNSTreeControllerコントローラーがあります。また、ウィンドウにコントローラーにバインドされているものがあります。Content ObjectNSTreeNode *NSOutlineView

すべて正常に動作し、コンテンツはアウトラインビューで表示されますが、コントローラーメソッドおよび(など)コントローラーのメソッドは常に返されますが、アイテムはadd(など)できません( 「有効」になっているボタンがコントローラーにバインドされており、このボタンがあります)無効になっています)。addChildinsertcanAddcanAddChildNO

私の間違いはどこにありますか?

アップデート

私の状況についてもう少し情報を提供したいと思います。

MyNodeクラスがあります:

nibファイルにもNSTreeControllerオブジェクトがあります。はIBでにchildrenKeyPath設定され、とは空です。childNodescountKeyPathisLeafKeyPath

コントローラモードはに設定されClass、クラス名はMyNodeです。

コンテンツオブジェクト(コンテンツ配列ではない)は、次のプロパティにバインドされMyDocumentますrootNode

そして、TreeControllerにバインドされているNSOulineViewがウィンドウにありcontentますarrangedObjects。コンテンツが表示されます。ノードのタイトルを編集することもできますが、TreeControllerを介して(子)ノードを追加または挿入することはできません。

2つのボタンがあります。「子の追加」と「子の挿入」がTreeControllerのアクションに接続されてaddChildおり、TreeControllerのプロパティにバインドされて有効になっています。ボタンが無効になっています。子ノードを追加または挿入できません。insertChildcanAddChildcanInsertChild

間違いはどこにありますか?

更新2

良いニュースがあります=)

Documentクラスを次のように変更しました。

そして、コンテンツ配列(コンテンツオブジェクトではない)をMyDocument.rootNodesプロパティにバインドすると、すべてが正常に機能します。

addXXXメソッドが単一のオブジェクトで機能しないのはなぜですか?ドキュメントにそれについて何も見つかりません...

そして、なぜTreeControllerはルート要素をrootNodes?に追加できるのでしょうか。rootNodesは、NSArrayではなく、NSMutableArrayです。

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

cocoa - NSTreeController が reloadData に応答しない

クラスへのバインディングを持つ NSTreeController があります。

NSOutlineView dirTree は NSTreeController にバインドします

具体的には、Outline View Content は ArrangedObjects にバインドします

これはうまく機能しているように見えますが、reloadData に応答しない理由を突き止めようとしています。

NSTreeController キー パスは次のとおりです。

これらは以下にリストされています。numberOfSubDirs は、サブディレクトリの単純な数を返します (診断表示が追加されています)。

データを更新するリフレッシュ関数を呼び出すと、[dirTree reloadData] が呼び出されます。次の出力が得られます:-

ディレクトリを削除して (Finder の外部で)、更新機能を呼び出すと、次の出力が得られます。

NSTreeController は、親 "Shared" で numberOfSubDirs を呼び出し、現在 6 つのサブディレクトリがあることを正しく通知されます。

ただし、削除されたアイテム「bZTree2」を含む 7 つのサブディレクトリを照会し、存在する 6 つだけを表示するように表示を更新しません。

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

nsoutlineview - NSOutlineView で Control Click のターゲットを取得するにはどうすればよいですか

NSTreeController によって制御される NSOutlineView があります。NSOutlineView は、Interface Builder のコンテキスト メニューに接続されています。

Control Click でメニューが表示され、クリックされた行が「選択」され、境界線のある淡いハイライトが表示されます。

どの行が「選択されている」かを見つける方法が見つからないようです。selectionIndexPath と selectedObjects は nil です。

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

objective-c - NSTreeControllerとNSOutlineViewを使用してアイテムの編集を監視する方法

NSOutlineView使用してデータを入力しましたNSTreeController。ツリーコントローラーは、次のようなプロパティを持つ配列を管理しNSMutableDictionaryます。NSString *nameand NSArray* children

nameUIで変更されたときに通知を受け取るにはどうすればよいですか?

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

cocoa - NSTreeController の「arrangedObjects」とは正確には何ですか?

NSTreeController の「arrangedObjects」をカスタム ビューの「managedContent」にバインドしようとしています (たとえば、カスタム アウトラインを表示できるようにするため)。セッターで…

newManagedContentArray ("arrangedObjects") は明らかに NSArray ではないため (したがって、addObject などを追加することはできません)、何も機能しなくなります。代わりに、NSControllerTreeProxy として表示されます。私の質問は、「arrangedObjects」とは正確には何ですか? 私はそれにバインドすることになっていますか?もしそうなら、どのように?