Actualmente estoy tratando de usar un nuevo NSOutlineView basado en vista en mi aplicación Cocoa. Como no estoy usando enlaces, así que implementé todos los métodos necesarios de delegado y fuente de datos en mi controlador.Problemas de fuente de celda de encabezado NSOutlineView basados en vista
En constructor de interfaces He añadido un NSOutlineView con un resaltado establecido en SourceList y el modo de contenido se establece en base Ver. Por lo tanto, había dos vistas de células tabla por defecto proporcionados (una celda de cabecera con HeaderCell conjunto como identificador y una celda de datos con DataCell conjunto como identificador)
Esto es lo que parece en constructor de interfaces, vistas de células cabecera mostrar correctamente un campo de texto de color azul grisáceo mientras que las vistas de datos celulares tienen una vista de la imagen y un campo de texto con la configuración de colores y fuentes correctas
para proporcionar los puntos de vista, yo uso el siguiente código, para devolver un DataCell- ver o una vista de celda de encabezado y establecer el campo de texto de la celda en consecuencia, basado en el identificador correspondiente establecido en el constructor de interfaz.
- (NSView *)outlineView:(NSOutlineView *)outlineView
viewForTableColumn:(NSTableColumn *)tableColumn
item:(id)item {
NSTableCellView *result = nil;
if ([item isKindOfClass:[NSMutableDictionary class]]) {
result = [outlineView makeViewWithIdentifier:@"HeaderCell" owner:self];
id parentObject = [outlineView parentForItem:item] ? [outlineView parentForItem:item] : groupedRoster;
[[result textField] setStringValue:[[parentObject allKeys] objectAtIndex:0]];
} else {
result = [outlineView makeViewWithIdentifier:@"DataCell" owner:self];
[item nickname] ? [[result textField] setStringValue:[item nickname]] : [[result textField] setStringValue:[[item jid] bare]];
}
return result;
}
Ejecutando todo lo que parece ser el siguiente.
¿Alguien podría darme pistas sobre por qué la celda del encabezado no está en negrita, ni está correctamente coloreada, cuando se selecciona?
bien, gracias, esto era exactamente lo que estaba buscando. En caso de que alguien más encuentre el problema, use setFloatsGroupRows: NO para evitar que el primer elemento del grupo * salte * hacia arriba y hacia abajo al expandir y colapsar según [esta publicación] (http: // stackoverflow.com/questions/6814620/strange-behavior-using-view-based-nsoutline-sourcelist) – BinaryBucks
Mientras estoy en ello ahora y todo se muestra correctamente, el código anterior funciona realmente no funciona con fluidez al expandir/colapsar un grupo como este es el caso, por ejemplo, Descubridor. Siempre hay un leve pero notable tartamudeo en la animación y una carga de CPU bastante pesada, como si la vista se hubiera asignado recientemente. Si solo uso makeViewWithIdentifer con un único identificador, de modo que cada celda sea una celda de encabezado (o una celda de datos, que no tenga colchón), todo funciona con fluidez. ¿Alguna pista de por qué? – BinaryBucks
Sí, toda la propiedad floatsGroupRows se acaba de romper para las vistas de esquema. No he visto el problema de rendimiento que describes. ¿Tal vez una regresión de Core Animation desde una superview respaldada por capas? No sé. –