Вернуть позицию выбранной строки в NSOutlineView

У меня есть NSOutlineView, который при двойном щелчке строки в представлении схемы отображает NSPopover с использованием следующего кода:

-(void)doubleClick:(id)nid{
    NSLog(@"Test double click");
    [_popover showRelativeToRect:[nid bounds] ofView:nid preferredEdge:NSMaxXEdge];
}

Код работает нормально, но размещает всплывающее окно в середине вертикальной высоты представления схемы. Я хотел бы, чтобы всплывающее окно появлялось рядом со строкой, которая выбрана (двойной щелчок) в представлении схемы. Есть ли вызов, который я могу сделать для представления структуры, чтобы вернуть позицию выбранной строки? Я не мог найти такой метод в документации. Ясно, я бы заменил [нид границ], что такое вызов. В противном случае, любые другие предложения о том, как я мог бы обойти это, будут оценены.


person user3932488    schedule 31.08.2014    source источник


Ответы (1)


Не забывайте, что NSOutlineView наследуется от NSTableView. Вы ищете -frameOfCellAtColumn:row:. Столбец, вероятно, равен 0. Строка, которую вы можете получить с помощью -selectedRow.

Если ваше представление схемы основано на представлении, вы также можете передать представление строки (-rowViewAtRow:makeIfNecessary:) и NSZeroRect для прямоугольника в -showRelativeToRect:..., чтобы оно автоматически отслеживало строку.

person Ken Thomases    schedule 31.08.2014
comment
Это именно то, чего я добивался. Спасибо, Кен, очень приятно! - person user3932488; 31.08.2014