你怎么能得到可见的行为NSOutlineView一个指标?我需要知道哪一级和行是可见的。
[编辑]什么实际上,我寻找的是NSOutlineView相当于CocoaTouch / UITableView的一个 - (NSArray的*)indexPathsForVisibleRows
你可以做到以下几点:
NSScrollView* scrollView = [self.tableView enclosingScrollView];
CGRect visibleRect = scrollView.contentView.visibleRect;
NSRange range = [self.tableView rowsInRect:visibleRect];
在范围内,您将得到该位置作为第一个可见的细胞,并在细胞长度的量显示这样你就可以知道可见单元的索引。
NSOutlineView
是NSTableView
子类。因此-rowsInRect:
可以与-visibleRect
(来自NSView
)进行组合。使用-levelForRow:
来确定级别。
我改变了我的数据源返回outlineView的NSIndexPath:孩子:ofItem :.这样,我可以用[outlineview rowAtPoint:点(以及类似的)来获得NSIndexPath。
这种变化需要我做一套,这些indexPaths,这样他们就不会得到释放,直到我不需要他们。此外,所有这些通常预期的模型对象中的其他代码现在需要查找从索引路径模型对象。在我的情况,这是有效的。
在斯威夫特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
}