Automatycznie dostosuj wysokość NSTableView

Zadałem to pytanie już wcześniej, ale nie jestem bardzo zadowolony z rozwiązania.

Automatycznie dostosuj rozmiar NSTableView

Chcę wyświetlić aNSTableView wNSPopoverlub wNSWindow.
Teraz rozmiar okna powinien się dostosować w widoku tabeli.

Podobnie jak Xcode to robi:

Jest to dość proste dzięki automatycznemu układowi, możesz po prostu przypiąć widok wewnętrzny do super widoku.

Moim problemem jest to, że nie mogę określić optymalnej wysokości widoku tabeli. Poniższy kod wylicza wszystkie dostępne wiersze, ale nie zwraca poprawnej wartości, ponieważ widok tabeli ma inne elementy, takie jak separatory i głowa tabeli.

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

Jak mogę to naprawić? Jak mogę poprawnie obliczyć wymaganą wysokość widoku tabeli.

2. Pytanie

Gdzie powinienem uruchomić ten kod?
Nie chcę tego implementować w kontrolerze, ponieważ jest to zdecydowanie coś, co powinien obsługiwać sam widok tabeli.
I nawet nie znalazłem żadnych pomocnych metod przekazywania.

Więc pomyślałem, że najlepiej byłoby, gdybyś mógł podklasowaćNSTableView.
Więc moje pytanie 2, gdzie go wdrożyć?

Motywacja

Na pewno warta nagroda

questionAnswers(5)

yourAnswerToTheQuestion