Как я могу прикрепить NSPopover к выбранному NSTableCellView в swift5 - PullRequest
0 голосов
/ 11 февраля 2020

У меня есть код, показанный ниже, который прикрепляет NSPopover к моему NSTableView. Я просмотрел весь Google и SO, но не могу найти способ прикрепить всплывающее окно к определенной c (выбранной) ячейке. Спасибо за помощь 1007 *an image

1 Ответ

1 голос
/ 13 февраля 2020

Из документации NSTableView.doubleAction:

Свойства clickedRow и clickedColumn позволяют определить, в какой строке и столбце произошел двойной щелчок, или если вместо строки двойной произошел щелчок в заголовке столбца.

@objc func tableViewDoubleAction(sender: NSTableView) {
    let row = sender.clickedRow

Из документации clickedRow:

Индекс строки, по которой пользователь щелкнул, чтобы вызвать сообщение действия , Возвращает -1, если пользователь щелкнул мышью в области представления таблицы, не занятой строками таблицы.

    if row >= 0 {

NSTableView имеет метод rect(ofRow:):

Возвращает прямоугольник, содержащий строку с указанным индексом.

        let rowRect = sender.rect(ofRow: row)

Используйте этот прямоугольник для позиционирования поповера

        popover.show(relativeTo: rowRect, of: sender, preferredEdge: NSRectEdge.maxY)

Соберите все вместе:

@objc func tableViewDoubleAction(sender: NSTableView) {
    let row = sender.clickedRow
    if row >= 0 {
        // create the popover
        let rowRect = sender.rect(ofRow: row)
        popover.show(relativeTo: rowRect, of: sender, preferredEdge: NSRectEdge.maxY)
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...