Ich versuche, eine NSTableView
innerhalb einer NSScrollView
(die Standardkonfiguration, das heißt) in Code, Auto-Layout verwenden. Ich kann nicht herausfinden, wie man das macht.NSTableView-Rahmen in einem NSClipView/NSScrollView mit Auto-Layout
Hier ist meine Loadview:
- (void)loadView
{
NSView *view = [[NSView alloc] init];
NSScrollView *tableScroll = [[NSScrollView alloc] init];
NSTableView *fileTable = [[NSTableView alloc] init];
[tableScroll setDocumentView:fileTable];
[tableScroll setHasVerticalScroller:YES];
[tableScroll setHasHorizontalScroller:NO];
fileTable.delegate = self;
fileTable.dataSource = self;
[fileTable setHeaderView:nil];
[fileTable setAllowsColumnReordering:NO];
NSTableColumn *column = [[NSTableColumn alloc] initWithIdentifier:@"column1"];
[fileTable addTableColumn:column];
[tableScroll setTranslatesAutoresizingMaskIntoConstraints:NO];
[fileTable setTranslatesAutoresizingMaskIntoConstraints:NO];
[view addSubview:tableScroll];
NSDictionary *topViews = NSDictionaryOfVariableBindings(tableScroll);
[view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[tableScroll]|" options:0 metrics:nil views:topViews]];
[view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"|[tableScroll]|" options:0 metrics:nil views:topViews]];
self.fileTable = fileTable;
self.view = view;
}
Was, dass mein Tisch passiert, ist Rahmen Sicht wird auf die Grenzen des NSClipView
immer gleich sein. Die Ansicht befindet sich in einem Fenster und wird mit ihr skaliert, und wenn ich das mache, wird die Größe der Scrollview, der Clip-Ansicht und der Tabelle geändert, aber ich kann nie irgendwo scrollen.
Mit Blick auf Einschränkungen bekomme ich die NSScrollView
erhält Einschränkungen, die die Clip-Ansicht, um es zu füllen, hat die Clip-Ansicht überhaupt keine Einschränkungen und die Tabellenansicht hat eine Reihe von Einschränkungen im Zusammenhang mit der NSTableRowViews
drin.
Wenn ich eine Einschränkung wie |[fileTable(>=500)]
der Clip-Ansicht hinzufügen, werde ich 500 Pixel NSTableView bekommen, aber natürlich will ich das nicht tun.
Wenn ich Maskensatz für automatischen Größen 'tableScroll', rufen' setTranslatesAutoresizingMaskIntoConstraints: zu bejahen ist auf 'tableScroll' und' fileTable' und entfernen Sie die beiden 'addConstraints' nennt, funktioniert es ok und ich sehe' NSAutoresizingMaskLayoutConstraint' auf den Clip Ansicht, dass Spezifizieren Sie die genaue Größe 'FileTable' Bedürfnisse. –