2011-06-21 13 views
5

OutlineViewの選択を別のクラスでプログラムで設定したいとします。NSOutlineViewの選択をプログラムで設定する(そしてNSTableViewの選択を得る)

NSOutlineViewのインスタンスには[[appDelegate outlineViewController] outlineView]でアクセスできます。

これは、アイテムのリスト(これはoutlineviewにもあります)を持つビューを持っており、ユーザーがビュー内のアイテムをクリックできるようにするためです。 outlineviewsの選択が変更され、(選択した項目の)新しいビューが表示されます。

もう一度OutlineViewさんの選択をプログラム的に変更するにはどうすればよいですか?

質問が不明瞭な場合は、わかりやすくするために何ができるか教えてください。

答えて

7

正しく理解していれば、NSOutlineView– selectRowIndexes:byExtendingSelection:メソッドを探していると思います。 NSOutlineViewNSTableViewのサブクラスであることに注意してください。私の場合のために

+0

NSOutlineViewでツリーに使用すると機能しません。 3-4レベルの深度ツリーを使用するときに選択を行う方法はありますか? –

2


I持っていた "アイテムリストビュー" の下からのアイテムとNSTableView
及びこれに類似OutlineView

    • なめらか
    • smth
    • smth
    • 。 。 。
  1. 親B
    • なめらか
    • なめらか
    • 。 。 。
  2. アイテムリストビュー
    • ITEM1
    • ITEM2
    • ITEM3

親AとBは重要ではありませんが、彼らは、実証ことをするためにここにいるが"Items list view"の前に固定数の行ではありません。

だから、私は何をしたか、私は私のtableViewに新しい選択された行を取得するために私のNSTableViewのデリゲートで、メソッドを使用
NSTableView *tableView = [aNotification object];
NSInteger clickedRowInTableView = [tableView selectedRow];

- (void)tableViewSelectionDidChange:(NSNotification *)aNotification
方法を使用したことでした。

その後、「アイテムリストビュー」の行番号を取得しました(「親アイテム」が展開されているかどうか、および所有している子供の数に応じて動的に取得されます) "、まだ展開されていない場合。

次に、「Items list view」行には、clickedRowInTableView + rowNrOfItemsListView + 1という1つの数値をすべて追加しました。

次にNSOutlineView– selectRowIndexes:byExtendingSelection:(ありがとうございました、それを指摘してください)、選択した行をOutlineViewに設定しました。

私はこれが私と同じ状況の人に何らかの助けになることを願っています。

+0

解決策を見つけてうれしいです!問題が完全に解決されたと感じる場合は、回答または鉱山のいずれかを回答としてマークし、将来の視聴者にこの問題が解決されたことを知らせる必要があります。 :) –

関連する問題