Фиксированная высота NSTableView, избегайте прокрутки - PullRequest
6 голосов
/ 04 марта 2010

У меня есть NSTableView с очень небольшим фиксированным числом строк.

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

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

height = (numRows * (rowHeight + intercellSpacingHeight))

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

Если снять флажок «Показать вертикальную прокрутку» в Интерфейсном Разработчике, полоса прокрутки не отображается, но таблица прокручивается вниз на один пиксель при выборе последней строки.

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

Спасибо.

Ответы [ 2 ]

3 голосов
/ 04 марта 2010

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

1 голос
/ 04 марта 2010

В awakeFromNib вы можете написать что-то вроде (не проверено):

NSScrollView *scrollView = [tableView superview];
NSView *container = [scrollView superview];
[[tableView retain] autorelease];
[tableView removeFromSuperview];
[scrollView removeFromSuperview];
[container addSubview:tableView];
[container setFrameSize:[tableView frame].size];

Кроме того, в Интерфейсном Разработчике вы можете извлечь табличное представление из представления прокрутки, переключившись в режим просмотра списка (Главное меню -> Вид -> как список). Затем расширяйте иерархию представлений, пока не увидите табличное представление. Вы можете перетащить это из вида прокрутки, но не в другой вид. Вы можете просто подключить это к розетке и программно добавить в представление.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...