Ändern Sie NSTableView oder NSScrollView abhängig von der Anzahl der Zeilen in der Tabelle

8

Ich habe eine View-basierte NSTableView, die in eine NSScrollView eingebettet ist. Es hat benutzerdefinierte Zellen, die x Anzahl der Pixel hoch sind. Das NSScrollView hat die gleiche Größe wie das Panel, von dem es eine Unteransicht ist. Ich möchte die gesamte NSTableView abhängig von wie viele Zeilen in der Tabelle sind.

Alles funktioniert, außer der Größenanpassung. Die manuelle Größenanpassung der Bildlaufansicht in IB scheint den gewünschten Effekt zu haben, aber NSSrollView scheint keine Klassenmethode zu haben, um die Größe der Ansicht zu ändern (wie NSView setFrame). Sollte ich die Scollview, die Tabellenansicht, beides oder etwas anderes verändern? Hat NSScrollView eine setFrame-Methode oder ähnliches, die ich vermisse?

Danke.

    
rick 01.05.2012, 06:54
quelle

3 Antworten

4

Stellen Sie vor dem programmgesteuerten Versuch sicher, dass die Autosizing-Masken der Gliederungsansicht ordnungsgemäß in der NIB-Datei eingerichtet sind. Es klingt, als ob die Umrissansicht (und die Bildlaufansicht) immer die gleiche Größe wie das Fenster haben soll, in dem sie sich befindet.

Standardmäßig sehen die Autosizing-Masken eines NSScrollView / NSOutlineView -Kombos, das Sie in ein Fenster platzieren, folgendermaßen aus:

Mit anderen Worten, es ist so eingerichtet, dass es immer die gleiche Größe wie jetzt hat, egal wie groß Sie die Größe des Fensters ändern.

Sie möchten die Autosizing-Masken so ändern, dass sie im folgenden Bild aussehen:

Um dies zu tun, klicken Sie in die weiße Box für die automatische Größenanpassung, wo immer eine gepunktete rote Linie ist, um sie in eine durchgehende rote Linie umzuschalten. Sobald dies konfiguriert ist, wird die Bildlaufansicht (und Tabellenansicht) immer (automatisch) so skaliert, dass sie dieselbe Größe wie das Fenster hat, in dem sie sich befindet.

Es kann auch eine Möglichkeit geben, dies mit der neuen "Auto-Layout" -Funktion von Lion zu erreichen, aber ich muss das jemandem überlassen, der mehr Erfahrung damit hat.

    
NSGod 01.05.2012, 08:26
quelle
1

Wenn Sie dies wirklich tun müssen (wenn Sie beispielsweise alle Zeilen in die Bildlaufansicht einfügen möchten, die das Blättern überflüssig machen) und die Bildlaufansicht nur einen Teil des Fensters / der Ansicht darstellt, können Sie Folgendes tun:

%Vor%     
dbainbridge 06.01.2013 22:49
quelle
0
%Vor%     
Gazzini 01.05.2012 06:56
quelle