Я пытаюсь добавить NSPopover в пользовательский NSTableCellView в NSTableView. Я могу получить NSPopover, чтобы он соответствовал правильному элементу, но позиция popover неверна. Чтобы яснить свою проблему, если у кого-то есть лучшее предложение для дизайна: когда пользователь наводится на контакт в таблице контактов, я хочу показать больше информации для этого контакта в popover (без щелчка)Получение позиции пользовательского NSTableCellView в NSTableView
В настоящее время NSPopover инициализируется следующим образом: contactPopover = NSPopover(contentViewController: contactViewController, sender: allContactsViewController.view, bounds: contactTableCellView.frame)
, где этот инициализатор просто устанавливает поведение popover и вызывает popover.show (...) где contactTableCellView - это вид ячейки таблицы контакта, который я хочу.
Проблема заключается в том, что contactTableCellView.frame
всегда имеет (x, y) = (0,0), потому что именно там начинается шаблон для настраиваемого NSTableCellView в xib. Чтобы правильно поместить popover в таблицу, мне нужно получить позицию представления ячейки таблицы относительно начала NSTable.
Прямо сейчас у каждого NSTableCellView есть настройка отслеживания мыши, так что при вводе мыши я уведомляю список контактов, чтобы отобразить popover, где я передаю соответствующий вид ячейки таблицы с мышью. Это дает мне доступ к представлению ячейки таблицы при попытке получить позицию относительно таблицы, но я не могу найти что-либо в документации о том, как получить реальную позицию представления ячейки таблицы относительно начала таблицы.
Смотрела: https://developer.apple.com/reference/appkit/nstableview https://developer.apple.com/reference/appkit/nstablecellview
FYI, я бы разместил картинку для ясности проблемы и того, что у меня есть сейчас, но поскольку это для моего продукта компании, я не могу этого сделать. – Kirkova