Tôi đang cố gắng tạo một NSTableView
bên trong một NSScrollView
(cấu hình tiêu chuẩn, có nghĩa là) bằng mã, sử dụng bố cục tự động. Tôi không thể tìm ra cách để thực hiện công việc này.Khung của NSTableView bên trong một NSClipView/NSScrollView sử dụng bố cục tự động
Dưới đây là loadView của tôi:
- (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;
}
gì xảy ra là khung xem bảng của tôi sẽ luôn bằng với giới hạn của NSClipView
. Khung nhìn nằm bên trong một cửa sổ và được thay đổi kích thước với nó, và khi tôi làm điều đó nó sẽ thay đổi kích thước scrollview, xem clip và bảng, nhưng tôi không bao giờ có thể cuộn bất cứ nơi nào.
Nhìn vào các ràng buộc tôi nhận được, NSScrollView
bị ràng buộc đặt chế độ xem clip để lấp đầy, chế độ xem clip không có ràng buộc nào và chế độ xem bảng có một loạt các ràng buộc liên quan đến NSTableRowViews
bên trong.
Nếu tôi thêm một ràng buộc như |[fileTable(>=500)]
vào giao diện clip, tôi sẽ nhận được 500 pixel của NSTableView, nhưng rõ ràng là tôi không muốn làm điều đó.
Nếu tôi đặt mặt nạ tự động hóa cho 'tableScroll', hãy gọi' setTranslatesAutoresizingMaskIntoConstraints: YES' trên 'tableScroll' và' fileTable' và xóa hai lệnh 'addConstraints', nó hoạt động ok và tôi thấy' NSAutoresizingMaskLayoutConstraint' trên giao diện clip chỉ định kích thước chính xác 'fileTable' cần. –