我正在尝试使用自动布局在代码中创建一个NSTableView
内部NSScrollView
(即标准配置)。我不知道如何使这项工作。
这是我的加载视图:
- (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,但显然我不想这样做。