То, что какао подразумевает под словом «ячейка», отличается от того, что вы называете ячейкой, например, в Excel.
В какао ячейка является подклассом NSCell
и может рассматриваться как легкаямногоразовый NSView
.Он используется для рисования многих предметов таким же образом.Например,
- (void)drawRect:(NSRect)draw_rect {
// ...
for ( id value in myDataArray ) {
[cell setObjectValue:value];
NSRect cellFrame = ...;
[cell drawWithFrame:cellFrame inView:self];
}
Таким образом, источник данных не возвращает ячейки, а вместо этого возвращает объекты, которые являются параметрами, в [(NSCell) -(void)setObjectValue:(id)value]
.Делегат возвращает, какой объект ячейки использовать для каждого элемента, и должен быть реализован таким образом, чтобы каждый тип ячейки создавался только один раз.Например,
- (NSCell *)outlineView:(NSOutlineView *)outlineView
dataCellForTableColumn:(NSTableColumn *)tableColumn
item:(id)item {
NSCell *cell = nil;
switch(tableColumn.tag) {
case 0:
if ( ! myCell ) {
myCell = [[NSCell alloc] init];
}
cell = myCell;
break;
default:
break;
}
return cell;
}
. Вы должны использовать теги столбцов таблицы или аналогичную функцию для повторного упорядочивания столбцов пользователем.