Ajustar automaticamente a altura de um NSTableView

Eu fiz essa pergunta uma vez antes, mas não estou muito satisfeito com a solução.

Ajustar automaticamente o tamanho do NSTableView

Eu quero mostrar umNSTableView em umNSPopoverou em umNSWindow.
Agora, o tamanho da janela deve se ajustar à visão de tabela.

Assim como o Xcode:

Isso é bastante simples com o Auto Layout, você pode fixar a visão interna à super visão.

Meu problema é que não consigo descobrir a altura ideal da visualização da tabela. O código a seguir enumera todas as linhas disponíveis, mas não retorna o valor correto, porque a exibição de tabela possui outros elementos, como separadores e o cabeçalho da tabela.

- (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. Pergunta

Como posso consertar isso? Como posso calcular corretamente a altura necessária da exibição de tabela.

2. Pergunta

Onde devo executar este código?
Eu não quero implementar isso em um controlador, porque é definitivamente algo que a visão de tabela deve manipular.
E eu nem encontrei nenhum método delegado útil.

Então eu imaginei que seria melhor se você pudesse subclasseNSTableView.
Então, minha pergunta 2, onde implementá-lo?

Motivação

Definitivamente vale uma recompensa

questionAnswers(5)

yourAnswerToTheQuestion