Я делаю NSTableView программно, но по какой-то причине, независимо от того, что я делаю, я не могу заставить отображаться проклятый headerView. Крайне важно, чтобы я делал это программно, а не использовал IB, потому что я на самом деле разрабатываю этот виджет в IDE с именем clozure cl, который является идеей, который содержит мост какао. Первоначально я думал, что эта проблема могла быть вызвана моей средой разработки, но я только что создал пример в XCode, используя только цель C, и кажется, что проблема сохраняется. То, что я делаю, довольно просто:
Я делаю окно в IB и в его методах awkefromnib создаю и настраиваю табличное представление, вот код:
- (void)awakeFromNib {
mydatasource *data = [[mydatasource alloc] init];
NSTableColumn *column = [[NSTableColumn alloc] initWithIdentifier:@"id"];
NSTableView *table = [[NSTableView alloc] initWithFrame: [[self
contentView]frame]];
[table setDataSource:data];
[table addTableColumn:column];
[table addTableColumn:column];
[[self contentView] addSubview:table];
}
Вот код для моего объекта источника данных:
- (int)numberOfRowsInTableView:(NSTableView *)aTableView
{
printf("NUM ROwS");
return 4;
}
- (id)tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex
{
printf("THE OTHER ONE");
return @"OKAY";
}
С помощью этого кода я получаю окно с двумя столбцами и четырьмя строками, и в каждой ячейке отображается строка «ОКЕЙ», все это хорошо, за исключением того, что в таблице нет заголовка. Это может иметь смысл, за исключением того, что когда я смотрю на метод заголовка таблицы, он имеет инициализированный заголовок с рамкой, значения которой имеют смысл. Мне просто интересно, почему я этого не вижу. Есть ли какая-то особая магия, которую нужно сделать, чтобы заголовок отображался? Я не могу найти какие-либо подсказки в документации. Еще раз, для lisp ide обязательно, чтобы это было сделано программно, поэтому было бы бесполезно не предлагать использовать IB, который, как я знаю, будет иметь рабочий заголовок. Большое спасибо.