2016-06-13 8 views
0

У меня есть окно NSPopover, которое содержит NSTableView. Я хочу удалить пустую строку в виде таблицы, чтобы я мог использовать Auto Layout, чтобы окно popover соответствовало представлению таблицы. Прямо сейчас я должен назначить фиксированный размер для представления таблицы, что не очень хорошо, потому что в окне будет мало места, когда в представлении таблицы будет несколько строк.Как удалить пустые строки в NSTableView?

Для iOS вопрос и ответ Resizing UITableView to fit content. К сожалению, это не относится к OS X.

+0

Я не понимаю вопроса. – Droppy

+0

@Droppy в представлении таблицы iOS отображает пустые строки с разделительными строками, если в представлении таблицы недостаточно содержимого. Обычный трюк, чтобы предотвратить это, - это настроить просмотр нижнего колонтитула. – Andy

+0

использование [сам.tableView размерToFit]; in viewDidAppear –

ответ

0

Экземпляр NSTableView работает по-разному с экземпляром UITableView. В основном в прокручиваемых табличных представлениях OS X есть экземпляр NSScrollView, который содержит экземпляр NSTableView в качестве вида документа.

  • NSScrollView и NSClipView

Эти два класса не являются частью таблицы зрения, и они не требуются, но практически все виды таблиц отображаются с помощью классов, которые составляют вид прокрутки механизм.

Apple Doc

Эта точка зрения документ подрезан целью клипа («Документ зоны») в представлении прокрутки, которая является подтаблица самой точки зрения прокрутки.

Here У вас есть объяснение иерархии прокрутки.

Таким образом, представление таблицы представляет собой прокручиваемое представление, размер которого автоматически принимается из его содержимого (количество строк) - и все, что вам нужно, и все, что вам нужно.

Поэтому есть два пути, чтобы получить ваши цели:

  • «РАБОТАТЬ» вид таблицы из ее иерархии: Используйте один вид таблицы без его родительских взглядов. Это не, что вы получаете в IB, когда вы кладете табличный вид в окно. Вы должны сделать это вручную или создать представление таблицы в своем коде.

  • Измените размер родительского прокрутки на вид таблицы с автозапуском.

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

Если у вас есть вопросы, просто добавьте их как комментарий.

Вот пример:

Я сделал видео этого для лучшего объяснения

http://sendvid.com/0lu0tgda?secret=d7b751f9-a3e9-4cd1-9865-20884b0bd6c8

Я поставил «Tableview» (это означает, что вы получите от IB, так что свиток с прокруткой, содержащий стол внутри), в окно и расположенную слева. Я сделал некоторые привязки, чтобы легко вставить и удалить. Просто обычные вещи.

Тогда у меня есть метод, заменив вид прокрутки с его точки зрения таблицы:

- (IBAction)replaceView:(id)sender 
{ 
    // Exchange the view 
    NSView *contentView = self.scrollView.superview; 
    NSTableView *tableView = self.tableView; 

    [contentView addSubview:self.tableView];  // Isolate the table view and make it the new subview 
    NSRect frame; 
    frame.origin = self.scrollView.frame.origin; // Take the location from the scroll view 
    frame.size = tableView.frame.size;   // Take the table views size 
    tableView.frame = frame; 
    [self.scrollView removeFromSuperview];  // Remove the meaningless scroll view 

    // Size the window to the table view 
    NSWindow *window = contentView.window; 
    NSRect contentFrame = contentView.frame; 
    contentFrame.size.height = frame.size.height; 
    NSRect windowFrame = window.frame; 
    windowFrame.size.height = [window frameRectForContentRect:contentFrame].size.height; 
    [window setFrame:windowFrame display:YES]; 

    // Set constraints to make the window resizing, when table view resizes 
    [contentView addConstraints: 
    [NSLayoutConstraint constraintsWithVisualFormat:@"V:|[tableView]|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(tableView)]]; 
} 

Да, вы можете украсить, что во многих направлениях. Тем не менее, это просто демонстрация того, что вы должны делать и какие инструменты использовать.

+0

Что вы делаете с заголовком? – Willeke

+0

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

+0

Вы потеряете заголовки (название, сортировка, изменение размера, перемещение). – Willeke

Смежные вопросы