Фиксированная высота NSTableView, постарайтесь не прокручивать

Я имею NSTableView это имеет очень маленькое постоянное число строк.

Когда я создаю NSTableView в интерфейсном разработчике, NSTableView содержится в NSScrollView. Я не нашел способ заставить таблицу существовать вне контекста представления прокрутки. Так как таблица только имеет небольшое количество строк, я не хочу, чтобы она прокрутила. Я хочу, чтобы таблица изменила размер на основе количества строк, и я сразу хочу нижнюю границу под нижней частью последней строки.

Если я установил высоту представления прокрутки следующим образом, я получаю вертикальную полосу прокрутки:

height = (numRows * (rowHeight + intercellSpacingHeight))

Если я добавляю один пиксель к той высоте, я не получаю полосу прокрутки, но я получаю дополнительный пиксель между нижней частью последней строки и нижней границей.

Если я снял флажок с флажком "Show Vertical Scroller" в Интерфейсном Разработчике, полоса прокрутки не появляется, но таблица прокручивает один пиксель вниз, когда я выбираю последнюю строку.

Существует ли способ иметь таблицу не, прокручивают вообще и сразу имеют нижнюю границу под последней строкой?

Спасибо.

6
задан iUser 27 September 2011 в 14:16
поделиться

2 ответа

В 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 вы можете извлечь представление таблицы из просмотр прокрутки путем перехода в режим просмотра списка (Главное меню -> Просмотр -> в виде списка). Затем разверните иерархию представлений, пока не увидите табличное представление. Вы можете перетащить это из представления прокрутки, но не в другое представление. Вы можете просто подключить это к розетке и программно добавить в представление.

Вам все равно нужно будет обновить высоту контейнера при изменении количества строк.

1
ответ дан 17 December 2019 в 07:03
поделиться

Вы всегда можете извлечь NSTableView из вложенного в него scrollview (в коде или в IB) ... Вы можете встроить таблицу в любой контейнер, но вам придется поддерживать размер таблицы внутри контейнера (и/или увеличивать/уменьшать контейнер в ответ, в зависимости от того, что вы хотите сделать).

3
ответ дан 17 December 2019 в 07:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: