Nspopupbuttoncell con menú jerárquico en nstableView
-
28-10-2019 - |
Pregunta
Yo tengo un NSTableView
de los cuales una columna contiene NSPopUpButtonCell
s. Esta columna se asigna a un IBOutlet
. La clase de controlador de mi aplicación crea un menú en su init
y lo asigna al NSTableColumn
ssacell, que es el NSPopUpButtonCell
.
El menú se ve de la siguiente manera:
NSPopUpButton
NSMenu
NSMenuItem item1
NSMenuItem item2
NSMenuItem item3
NSMenu
NSMenuItem item3_1
NSMenuItem item3_2
NSMenuItem item4
NSMenuItem item4_1
NSMenuItem item4_2
NSMenuItem item4_3
Cuando hago clic en el menú y elijo Elemento1 o elemento2, mi fuente de datos tableView:setObjectValue:forTableColumn:row:
se dispara y el valor de objeto es 0 o 1, el índice del elemento elegido. Sin embargo, cuando elijo un elemento de uno de los submenús, el valor de objeto que obtengo es -1. ¿Cómo podría obtener el elemento del menú que fue elegido?
Solución
No creo que confíe en -TableView: setObjectValue: FortableColumn: fila: cuando tienes un conjunto complejo de menús y submenus; Si recuerdo correctamente, no hay realmente un 'valor de objeto' para la asignación del elemento del menú cuando el submenus entra en juego: nsmenu es demasiado viejo para usar nsindexpath como podría esperar, y no es lo suficientemente complejo como para tratar de mapear enteros a los menús y submenus. (Además, los menús tienden a cambiar mucho dinámicamente, por lo que el significado de "3" sería bastante retorcido).
Establezca un objetivo y una acción en sus NsMenuitems (o posiblemente solo el Nsmenus principal) para hacer algo confiable cuando se selecciona cada uno.
Otros consejos
¿Está utilizando el mismo código que usted para recuperar el artículo 1 y 2? Supongo que lo es, pero a veces estas cosas se pasan por alto fácilmente =/