2010-06-24 3 views
2

В моем приложении у меня есть NSTableView с пользовательской ячейкой заголовка, которая запрограммирована автоматически. Код для назначения пользовательской ячейки выглядит следующим образом:NSTableView с пользовательским NSColumnHeaderCell

-(void)setupTableHeader:(id)table { 
NSArray *columns = [table tableColumns]; 
    NSEnumerator *cols = [columns objectEnumerator]; 
    NSTableColumn *col = nil; 

    TRDarkTableColumnHeaderCell *iHeaderCell; 

    while (col = [cols nextObject]) { 
     iHeaderCell = [[TRDarkTableColumnHeaderCell alloc] initTextCell:[[col headerCell] stringValue]]; 
     [col setHeaderCell:iHeaderCell]; 
     [iHeaderCell release]; 
    } 
} 

Это работает так, как вы ожидали. Однако, когда мое окно изменено и NSTableView отображает свои полосы прокрутки, создается дополнительная ячейка заголовка с помощью NSTableHeaderCell по умолчанию. Чтобы попытаться справиться с этим, я попытался настроить уведомление для изменения размера окна. К сожалению, это не имеет никакого эффекта (моя функция setupTableHeader еще возвращает 1 столбец таблицы)

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(setupTableHeaders) name:NSWindowDidResizeNotification object:[[NSApp delegate] window]]; 

Обратите внимание, что мое уведомление вызывает вспомогательную функцию setupTableHeaders, которая вызывает функцию setupTableHeader упомянутой выше. Вот скриншот, чтобы проиллюстрировать этот вопрос:

alt text http://img22.imageshack.us/img22/640/headercell.png

ответ

2

Это угол зрения,. Попробуйте:

[table setCornerView:nil];

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

+0

Как и было предложено, мне также пришлось подклассифицировать вид заголовка таблицы, но это отлично работало. Спасибо. – ndg