如何获得NSOutlineView的可见行索引?

Cal*_*Cal 9 macos cocoa objective-c nsoutlineview

如何获得NSOutlineView的可见行索引?我需要知道哪个级别和哪些行是可见的.

[编辑]我实际需要的是一个等同于CocoaTouch/UITableView的NSOutlineView - (NSArray*)indexPathsForVisibleRows

use*_*656 24

你可以做到以下几点:

NSScrollView* scrollView = [self.tableView enclosingScrollView];

CGRect visibleRect = scrollView.contentView.visibleRect;

NSRange range = [self.tableView rowsInRect:visibleRect];
Run Code Online (Sandbox Code Playgroud)

在该范围内,您将获得作为第一个可见单元格的位置,并且在长度中显示单元格的数量,以便您可以知道可见单元格的索引.


Jos*_*zzi 13

NSOutlineView是一个NSTableView子类.因此-rowsInRect:可以与-visibleRect(from NSView)结合使用.使用-levelForRow:来确定级别.


Cal*_*Cal 0

我更改了数据源以返回大纲视图的 NSIndexPath:child:ofItem:。这样我可以使用 [outlineview rowAtPoint:point] (和类似的)来获取 NSIndexPath。

此更改要求我创建一组这些索引路径,以便在我不需要它们之前它们不会被释放。此外,通常需要模型对象的所有其他代码现在都需要从索引路径查找模型对象。就我而言,这是有效的。