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

发布于 2024-10-12 16:11:23 字数 157 浏览 6 评论 0原文

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

[编辑] 我实际上正在寻找的是一个相当于 CocoaTouch/UITableView 的 NSOutlineView - (NSArray *)indexPathsForVisibleRows

How can you get a indexes of visible rows for an NSOutlineView?
I need to know which level and which rows are visible.

[EDIT]
What I'm actually looking for is an NSOutlineView equivalent to CocoaTouch/UITableView - (NSArray *)indexPathsForVisibleRows

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

一向肩并 2024-10-19 16:11:23

您可以执行以下操作:

NSScrollView* scrollView = [self.tableView enclosingScrollView];

CGRect visibleRect = scrollView.contentView.visibleRect;

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

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

you can do the following:

NSScrollView* scrollView = [self.tableView enclosingScrollView];

CGRect visibleRect = scrollView.contentView.visibleRect;

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

in the range you will get the location as the first visible cell and in the length the amount of cells are shown so you can know the index of the visible cells.

初心 2024-10-19 16:11:23

NSOutlineViewNSTableView 子类。因此 -rowsInRect: 可以与 -visibleRect (来自 NSView)结合使用。使用 -levelForRow: 确定级别。

NSOutlineView is an NSTableView subclass. Therefore -rowsInRect: can be combined with -visibleRect (from NSView). Use -levelForRow: to determine the level.

述情 2024-10-19 16:11:23

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

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

I changed my datasource to return an NSIndexPath for outlineView:child:ofItem:.
This way I could use [outlineview rowAtPoint:point] (and similar) to get the NSIndexPath.

This change required me to make a set of these indexPaths so they wouldn't get released until I don't need them. Also, all the other code which normally expected a model object now needs to lookup the model object from the index path. In my case this was efficient.

少年亿悲伤 2024-10-19 16:11:23

在 Swift 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
}

In Swift 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
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文