Автоматическая настройка высоты NSTableView

Я уже задавал этот вопрос однажды, но я не очень доволен решением.

Автоматически настраивать размер NSTableView

Я хочу отобразитьNSTableView вNSPopoverили вNSWindow.
Теперь размер окна должен корректироваться в соответствии с табличным представлением.

Как это делает Xcode:

С Auto Layout это довольно просто, вы можете просто прикрепить внутренний вид к суперпросмотру.

Моя проблема в том, что я не могу определить оптимальную высоту представления таблицы. Следующий код перечисляет все доступные строки, но не возвращает правильное значение, потому что в табличном представлении есть другие элементы, такие как разделители и заголовок таблицы.

- (CGFloat)heightOfAllRows:(NSTableView *)tableView {
    CGFloat __block height;
    [tableView enumerateAvailableRowViewsUsingBlock:^(NSTableRowView *rowView, NSInteger row) {
        // tried it with this one
        height += rowView.frame.size.height;

        // and this one
        // height += [self tableView:nil heightOfRow:row];
    }];

    return height;
}
1. Вопрос

Как я могу это исправить? Как я могу правильно рассчитать необходимую высоту представления таблицы.

2. Вопрос

Где я должен запустить этот код?
Я не хочу реализовывать это в контроллере, потому что это определенно то, что табличное представление должно обрабатывать само.
И я даже не нашел никаких полезных методов делегата.

Так что я решил, что лучше бы, если бы вы могли подклассNSTableView.
Итак, мой вопрос 2, где это реализовать?

мотивация

Определенно стоит награды

Ответы на вопрос(5)

Ваш ответ на вопрос