Я пытаюсь создать NSTableView
внутри NSScrollView
(стандартная конфигурация, то есть) в коде, используя автоматическую компоновку. Я не могу понять, как это сделать.Рамка NSTableView внутри NSClipView/NSScrollView с использованием автоматического макета
Вот мой 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;
}
Что происходит, что рамки моего табличного представления всегда будут равны пределами NSClipView
. Представление находится внутри окна и изменяет его размер, и когда я это сделаю, он изменит размер прокрутки, вид клипа и таблицы, но я никогда не могу прокручивать нигде.
В поисках ограничений, которые я получаю, NSScrollView
получает ограничения, которые задают просмотр клипа для его заполнения, просмотр клипа вообще не имеет ограничений, а в представлении таблицы есть куча ограничений, связанных с NSTableRowViews
внутри него.
Если я добавлю ограничение, подобное |[fileTable(>=500)]
, то я получу 500 пикселов NSTableView, но, очевидно, я не хочу этого делать.
Если я установил маску для маскировки для 'tableScroll', вызовите' setTranslatesAutoresizingMaskIntoConstraints: YES' на 'tableScroll' и' fileTable' и удалим два вызова 'addConstraints', он работает нормально, и я вижу' NSAutoresizingMaskLayoutConstraint' в виде клипа, который укажите точный размер 'fileTable'. –