NSTableView
自動レイアウトを使用して、コード内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
、クリップビューをそれを満たすように設定するgets制約があり、クリップビューにはまったく制約がなく、テーブルビューにはそのNSTableRowViews
内部に関連する一連の制約があります。
クリップビューのような制約を追加する|[fileTable(>=500)]
と、500ピクセルのNSTableViewが得られますが、明らかにそれはしたくありません。