Я имею NSTableView
это имеет очень маленькое постоянное число строк.
Когда я создаю NSTableView
в интерфейсном разработчике, NSTableView
содержится в NSScrollView
. Я не нашел способ заставить таблицу существовать вне контекста представления прокрутки. Так как таблица только имеет небольшое количество строк, я не хочу, чтобы она прокрутила. Я хочу, чтобы таблица изменила размер на основе количества строк, и я сразу хочу нижнюю границу под нижней частью последней строки.
Если я установил высоту представления прокрутки следующим образом, я получаю вертикальную полосу прокрутки:
height = (numRows * (rowHeight + intercellSpacingHeight))
Если я добавляю один пиксель к той высоте, я не получаю полосу прокрутки, но я получаю дополнительный пиксель между нижней частью последней строки и нижней границей.
Если я снял флажок с флажком "Show Vertical Scroller" в Интерфейсном Разработчике, полоса прокрутки не появляется, но таблица прокручивает один пиксель вниз, когда я выбираю последнюю строку.
Существует ли способ иметь таблицу не, прокручивают вообще и сразу имеют нижнюю границу под последней строкой?
Спасибо.
В awakeFromNib
вы можете написать что-то вроде (непроверено):
NSScrollView *scrollView = [tableView superview];
NSView *container = [scrollView superview];
[[tableView retain] autorelease];
[tableView removeFromSuperview];
[scrollView removeFromSuperview];
[container addSubview:tableView];
[container setFrameSize:[tableView frame].size];
В качестве альтернативы, в Interface Builder вы можете извлечь представление таблицы из просмотр прокрутки путем перехода в режим просмотра списка (Главное меню -> Просмотр -> в виде списка). Затем разверните иерархию представлений, пока не увидите табличное представление. Вы можете перетащить это из представления прокрутки, но не в другое представление. Вы можете просто подключить это к розетке и программно добавить в представление.
Вам все равно нужно будет обновить высоту контейнера при изменении количества строк.
Вы всегда можете извлечь NSTableView из вложенного в него scrollview (в коде или в IB) ... Вы можете встроить таблицу в любой контейнер, но вам придется поддерживать размер таблицы внутри контейнера (и/или увеличивать/уменьшать контейнер в ответ, в зависимости от того, что вы хотите сделать).