programming objective guide framework developer objective-c cocoa xcode macos osx-leopard

objective c - objective - NSTableView con celdas personalizadas



xcode programming (3)

Una celda solo puede mantener un valor de objeto a la vez. Cree un objeto modelo con la imagen y la cadena / cadena atribuida como propiedades, y rellene la vista de tabla con eso.

Además, un campo de texto es una vista. Su modelo no debe saber nada de su presentación, ese es el trabajo de sus puntos de vista.

Parece que he estado buscando durante mucho tiempo y no he encontrado una respuesta fácil y excelente a mi problema.

Estoy usando XCode con Cocoa / ObjC y estoy intentando crear un NSTableView que cargará los valores de un NSDictionary / Array en diferentes secciones de una celda.

Por ejemplo, estoy tratando de obtener un NSImage, NSTextField y otros elementos en una celda personalizada (junto con una imagen de fondo). Sin embargo, no puedo encontrar una respuesta simple a cómo crear esto ...

He estado programando para el iPhone con UITableViews por un tiempo y parece que no puedo encontrar una forma similar con NSTableViews.

Cualquier ayuda sería realmente genial!

Gracias

Dominic



NSTableView tiene -tableView:dataCellForTableColumn:row: Simplemente cree su subclase NSCell en su delegado y devuélvala si necesita personalización para esa fila. Si solo está utilizando su celda personalizada para cada fila en la vista de tabla, también puede usar IB para establecer la clase de celda personalizada.

La vista de tabla copiará la celda según sea necesario, por lo que puede mantener la celda como una variable de instancia si fuera más eficiente. Los métodos de origen de datos o los enlaces en la vista de tabla funcionan como lo harían normalmente, solo devolverá su diccionario poblado en lugar de una sola cadena o número. También puede pasar un objeto de modelo personalizado directamente a la vista de tabla, aunque tendrá que hacerlo copiable o anular setObjectValue: en su celda para envolverlo en un NSValue.

Si la subclasificación de NSCell le está dando problemas, puede ser una experiencia de aprendizaje. Comience con -drawWithFrame:inView: para dibujar todos sus objetos personalizados, y vaya desde allí a medida que necesite más funcionalidad.