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

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

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

Я хочу отобразитьNSTableView вNSPopoverили в.NSWindow

Теперь окноРазмер должен быть скорректирован с учетом таблицы.

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

 

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

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

- (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)

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