В моем приложении у меня есть 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
Как и было предложено, мне также пришлось подклассифицировать вид заголовка таблицы, но это отлично работало. Спасибо. – ndg