問題タブ [nsoutlineview]

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 投票する
5 に答える
5345 参照

cocoa - タブキーでのNSTableViewとNSOutlineViewの編集

私のアプリにはNSOutlineViewとがありNSTableView、両方で同じ問題が発生しています。いずれかの行が選択されている状態で Tab キーを押すと、次のキー ビューをファーストレスポンダーにする代わりに、最初の列が編集モードになります。次の重要なビューに移動するには、すべての列をタブで移動する必要があります。

また、いずれかのビューに Shift キーを押しながらタブ移動すると、最後の列が編集モードになり、前のキー ビューに移動するためにさらにシフト タブが必要になります。

重要な場合は、自分のではなく、自動計算されたキー ビュー ループを にNSWindow設定して使用していautorecalculatesKeyViewLoop = YESます。ユーザーが列を編集することを選択したら、列間をタブで移動したいと思いますが、タブキーが編集モードをトリガーするのは標準的な動作ではないと思います。

アップデート

以下の役立つ回答のおかげで、解決しました。基本的に-keyDown、カスタム テーブル ビュー クラスをオーバーライドします。これは、テーブル ビューからのタブ移動とシフト タブ移動を処理します。ただし、テーブル ビューへのシフト タブ移動を解決するのはより困難でした。別のビューからコントロールを受け入れる場合YES、カスタム テーブル ビューにブール値のプロパティを設定します。-acceptsFirstResponder

デリゲート-tableView:shouldEditTableColumn:rowは、現在のイベントがシフト タブkeyDownイベントである場合にそれをチェックします。-tableView:shouldEditTableColumn:rowが呼び出され、それはシフト タブ イベントではありません。テーブル ビューのプロパティを に戻してNO、通常どおり編集できるようにします。

以下に完全なソリューションを貼り付けました。



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

cocoa - NSOutlineViewとCoreDataに挿入されたアイテムを自動的に選択する方法

エンティティにバインドされたバインドと、にバインドされたツリーがありNSTreeControllerます。ここで、「追加」ボタンをクリックしたときに、に新しいエンティティを追加し、エンティティを選択して、編集用に強調表示したいと思います。を呼び出すと、挿入は非同期になり、アウトラインビューでは新しい行が自動的に選択されないため、新しいオブジェクトがどれであるかを知る方法がありません。そのため、プログラムで新しいエンティティを挿入する必要があります。したがって、を呼び出します(以下を参照)。NSArrayControllerNSOutlineViewtreeController[arrayController add]addButtoncreateNewGroupoutlineViewController

繰り返しますが、新しいエンティティの挿入は同期プロセスではないようです。NSOutlineView後の次の行でそれを見つけることができませんcurrentObject = [NSEntityDescription...。そして、私はデータをリロードした後に試しました。そのため、アレイコントローラーの値の変化を観察する必要があります。この種の作業は、ほとんどの場合機能しますが、機能しない場合もあります。これはこの種のことへの正しいアプローチですか?

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 に答える
479 参照

cocoa - NSSplitView の NSOutlineView バッジ

drawAtPoint:、NSAttributedString、そしてもちろん NSBezierPath を使用してセルの右側にバッジ番号を描画する NSOutlineView があります。NSSplitView のサブビュー内でアウトライン ビューのサイズ変更が発生すると、私の問題が発生します。バッジは、サイズ変更に伴って左または右に移動します。セル自体のテキストに到達すると、その下のテキストを停止したり切り捨てたりしません。すぐ上に飛んでいきます。

セルにその横にあるカスタム描画ビューを認識させ、それに応じてテキストを切り捨てる方法はありますか? 私は解決策 PXSourceList を既に試しましたが、それも役に立ちませんでした。

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

nsoutlineview - MonoMac の NSTreeController で NSOutlineView を使用する

MonoMac を使用して NSTreeController バインディングで NSOutlineView を使用する方法の例はありますか?

前もってありがとう、フレドリック

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

cocoa - NSOutlineViewのnoteNumberOfRowsChangedはreloadDataと同等ではありません

に別のものを追加Objectして、を呼び出します。ドキュメントを正しく読んだ場合、OutlineViewは、1行を追加し、それ自体を正しく再描画したことを認識できるはずです。しかし、代わりに何も起こりません。NSOutlineViewNSOutlineViewDataSource[myOutlineView noteNumberOfRowsChanged]

私がそれを呼び出す[myOutlineView reloadData]と、それは機能しますが、ドキュメントによると、(すべてのデータをリロードするため...当たり前)reloadDataよりもはるかに高いオーバーヘッドがありますnoteNumberOfRowsChanged

私はバインディングを使用していません、私はNSOutlineViewDataSource自分自身を供給します。

誰かが私が間違っていることを知っていますか?

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

cocoa - UIKitでNSOutlineViewを模倣する

私は現在、UIKitでNSOutlineViewを模倣するソリューションを探しています。アイデアは、典型的なFinderウィンドウのリストビューに似た階層を表示するUITableViewを作成することです。つまり、アイテムは展開することもしないこともでき、各アイテムには子を含めることも含めないこともできます。

階層は数レベルの深さになる可能性があるため、セクションのみを使用することはできません。トリッキーな部分は、テーブルビューのデータソースを効率的に管理し、ユーザーがテーブルビューを操作したときに展開されるアイテムと、折りたたみまたは展開する行の数を認識するコントローラーを用意することです。

私は既成の解決策を求めているのではありませんが、これを効率的に機能させるための指針やアドバイスをいただければ幸いです。

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

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

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

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

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

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

では、なぜですか?

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

nsurl - アウトライン ビューで表示したい NSURL オブジェクトで NSOutlineView が -indexPath を呼び出すのはなぜですか?

NSURL オブジェクトのリストを入力したい NSOutlineView があります。私はこれをNSTableViewで動作させています。NSOutlineView に移行するための最初のステップとして (ユーザーが望むさまざまな基準で NSURL オブジェクトをグループ化できるようにするため)、テーブル ビューを模倣する方法で NSOutlineViewDataSource プロトコルの最小限のメソッドを実装しました。

[NSURL indexPath]これにより、呼び出されていることを示す認識されないセレクター例外がスローされ続けます。このメソッドが呼び出される理由や回避方法を知っている人はいますか?