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

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

于 2011-01-19T02:57:11.037 回答
0

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

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

于 2011-01-19T03:39:58.290 回答
0

斯威夫特 3中:

let rows = IndexSet(integersIn: 0..<outlineView.numberOfRows)
let rowViews = rows.flatMap { outlineView.rowView(atRow: $0, makeIfNecessary: false) as? RowView }

for rowView in rowViews 
    //iterate over rows
}
于 2017-09-16T03:09:29.763 回答