Pregunta

Yo tengo un NSTableView de los cuales una columna contiene NSPopUpButtonCells. 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 NSTableColumnssacell, 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?

¿Fue útil?

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 =/

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top