Passt die Höhe eines NSTableView automatisch an

Ich habe diese Frage schon einmal gestellt, bin aber mit der Lösung nicht sehr zufrieden.

Passen Sie die Größe von NSTableView automatisch an

Ich möchte ein anzeigenNSTableView in einemNSPopover, oder in aNSWindow.
Jetzt sollte sich die Fenstergröße mit der Tabellenansicht anpassen.

So wie es Xcode macht:

Mit Auto Layout ist dies ziemlich einfach. Sie können die Innenansicht einfach an die Superansicht heften.

Mein Problem ist, dass ich die optimale Höhe der Tabellenansicht nicht herausfinden kann. Der folgende Code listet alle verfügbaren Zeilen auf, gibt jedoch nicht den richtigen Wert zurück, da die Tabellenansicht andere Elemente wie Trennzeichen und den Tabellenkopf enthält.

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

Wie kann ich das beheben? Wie kann ich die benötigte Höhe der Tabellenansicht richtig berechnen?

2. Frage

Wo soll ich diesen Code ausführen?
Ich möchte dies nicht in einem Controller implementieren, da es definitiv etwas ist, das die Tabellenansicht selbst handhaben sollte.
Und ich fand nicht einmal hilfreiche Delegate-Methoden.

Also dachte ich mir, am besten wäre es, wenn Sie eine Unterklasse bilden könntenNSTableView.
Also meine Frage 2, wo man es umsetzt?

Motivation

Auf jeden Fall eine Prämie wert

Antworten auf die Frage(5)

Ihre Antwort auf die Frage