9

NSOutlineView の可視行のインデックスを取得するにはどうすればよいですか? どのレベルとどの行が表示されているかを知る必要があります。

[編集] 私が実際に探しているのは、CocoaTouch/UITableView に相当する NSOutlineView です - (NSArray *)indexPathsForVisibleRows

4

4 に答える 4

24

次のことができます。

NSScrollView* scrollView = [self.tableView enclosingScrollView];

CGRect visibleRect = scrollView.contentView.visibleRect;

NSRange range = [self.tableView rowsInRect:visibleRect];

範囲では、最初に表示されるセルとして位置を取得し、長さではセルの量が表示されるため、表示されるセルのインデックスを知ることができます。

于 2013-06-27T06:32:25.983 に答える
13

NSOutlineViewNSTableViewサブクラスです。したがって、 (from )-rowsInRect:と組み合わせることができます。レベルを決定するために使用します。-visibleRectNSView-levelForRow:

于 2011-01-19T02:57:11.037 に答える
0

データソースを変更して、outlineView:child:ofItem:のNSIndexPathを返しました。このようにして、[outlineview rowAtPoint:point](および同様のもの)を使用してNSIndexPathを取得できます。

この変更により、これらのindexPathのセットを作成して、必要がなくなるまでリリースされないようにする必要がありました。また、通常はモデルオブジェクトを予期していた他のすべてのコードは、インデックスパスからモデルオブジェクトを検索する必要があります。私の場合、これは効率的でした。

于 2011-01-19T03:39:58.290 に答える