gpt4 book ai didi

swift - 获取自定义 NSTableCellView 在 NSTableView 中的位置

转载 作者:行者123 更新时间:2023-11-28 06:25:58 24 4
gpt4 key购买 nike

我正在尝试将 NSPopover 添加到 NSTableView 中的自定义 NSTableCellView。我能够让 NSPopover 出现对应于正确的元素,但弹出窗口的位置不正确。为了弄清楚我的问题,以防有人对设计提出更好的建议:当用户将鼠标悬停在联系人表格中的联系人上方时,我想在弹出窗口中显示该联系人的更多信息(无需点击)

目前NSPopover初始化如下:contactPopover = NSPopover(contentViewController: contactViewController, sender: allContactsViewController.view, bounds: contactTableCellView.frame)该初始化器只是轻轻地设置弹出行为并调用 popover.show(...)其中 contactTableCellView 是我想要的联系人的表格单元格 View 。

问题是 contactTableCellView.frame 总是有 (x,y) = (0,0) 可能是因为这是自定义 NSTableCellView 的模板在 xib 中开始的地方。要将弹出窗口正确放置在表格上,我需要获取表格单元格 View 相对于 NSTable 原点的位置。

现在每个 NSTableCellView 都有鼠标跟踪设置,所以在鼠标输入时,我通知联系人列表显示弹出框,我在其中传递相应的鼠标输入的表格单元格 View 。这使我在尝试获取相对于表格的位置时可以访问表格单元格 View ,但是我在文档中找不到任何关于如何获取表格单元格 View 相对于表格原点的真实位置的信息。

查看:https://developer.apple.com/reference/appkit/nstableview https://developer.apple.com/reference/appkit/nstablecellview

最佳答案

我不确定这是关于什么的:

contactPopover = NSPopover(contentViewController: contactViewController, sender: allContactsViewController.view, bounds: contactTableCellView.frame)

这个方法是从哪里来的?它不是 NSPopover 本身的一部分。

无论如何,假设创建的弹出窗口没有多余的包袱,这应该可以满足您的需求:

contactPopover.show(relativeTo:contactTableCellView.bounds of:contactTableCellView preferredEdge:.minY)

这将相对于单元格 View 定位弹出窗口,而无需弄清楚单元格 View 在表格 View 中的位置。

关于swift - 获取自定义 NSTableCellView 在 NSTableView 中的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41881197/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com