Las diferencias entre NSTableView y NSCollectionView
-
11-09-2019 - |
Pregunta
Estoy tratando de decidir qué camino tomar para el desarrollo de mi aplicación Snow Leopard. En primer lugar, debería Prefacio con las diferencias obvias:
NSTableView
puede tener múltiples columnas de datos para la representación de diferentes partes de la misma "elemento" de los datos (una fila) donde NSCollectionView
puede mostrar una cuadrícula de datos, así, pero cada fila + combo columna es su propio elemento. Para mis propósitos, supongo que estoy tratando con una sola columna.
-
Por lo que yo puedo decir, artículos
NSCollectionView
sonNSView
s que todos deben ser de las mismas dimensiones. Además, a diferenciaNSTableView
, artículos CollectionView se copian en elNSCollectionView
en lugar de ser proporcionado según sea necesario por undataSource
(estoy seguro acerca de esto, por favor, corríjanme si me equivoco). -
NSTableView
utilizaNSCell
s si decide personalizar la visualización de filas. ComoNSCell
no es unaNSResponder
, ¿cómo se acontecimientos mango (si quería añadir algún tipo de accesorio a la célula, por ejemplo, cómo las flechas en el trabajo de iTunes (aunque, iTunes es carbono). He visto algunas subclases enNSCell
IB que parecen ser equivalentes de sus hermanosNSControl
, pero lo que si quiero tener objetosMySweetView
en unNSCell
?). -
Ambos parecen funcionar sobre la misma con respectos a consolidaciones, correcto?
-
Por último,
NSCollectionView
parece jugar muy bien con la animación de sus elementos (para artículos re-organización, o filtrarlas por ejemplo).NSTableView
puede hacer esto con sus filas?
Algo más que deba tener en cuenta?
Solución
- La diferencia aquí es que en una vista de tabla, cada fila es un artículo, y las columnas muestran diferentes aspectos (propiedades) de dicho elemento. En una vista de colección, cada intersección de fila-columna es un elemento.
- No he hecho esto, pero trate de implementar
tableView:didClickTableColumn:
en su vista de tabla delegado. Ese método es nuevo en 10.6. Usted tendría que obtener[NSApp currentEvent]
, y probablemente pasarlo a un método en la celda de la columna. - Con una vista de tabla, se unen a la columna; que no se unen a la vista (no para proporcionar contenido, de todos modos, lo hace obligar a la vista de las cosas como índices de selección). Con una vista de colección, no hay columnas (ver # 1), por lo que siempre ates de la vista.
- No.
Otros consejos
Fwiw, NSTableView es una parte muy antigua de la AppKit, y que es un poco enrevesada.
Si eres nuevo en la plataforma, le recomiendo conseguir su cabeza alrededor de NSCollectionView primero.