/ / Obtenga una fila de NSPopUpButton en vista NSTableView - objectivo-c, cacao, constructor de interfaces, nstableview

Obtenga una fila de NSPopUpButton en vista NSTableView - objectivo-c, cocoa, interface-builder, nstableview

Tengo una vista de tabla basada en vista con una fila que contiene NSPopupButtons. Cuando el usuario cambia el popUpButton, necesito obtener la fila de la tabla en la que está contenido este popUpButton.

Primero esperaba obtener la fila con

NSInteger clickedRow = [tableView rowForView: ((NSPopUpButton*) sender)];

Pero el remitente de la acción siempre es un NSMenuItem objeto no el NSPopUpButton. NSMenuItem Sin embargo, no es una vista, así que no puedo usar rowForView con ese.

Actualmente mi IBAction se ve así:

- (IBAction)changedPopUp:(id)sender {
NSMenuItem* selectedMenuItem = ((NSMenuItem*) sender);
NSPopUpButton* popupButton = (NSPopUpButton*)[selectedMenuItem view];
NSInteger clickedRow = [tableView rowForView:popupButton];
//[...]
}

Pero la propiedad de vista no se configura automáticamente y me resulta bastante incómodo configurarlo manualmente para cada elemento de menú de seguridad.

¿No hay una manera fácil de obtener la fila de la tabla?

Respuestas

0 para la respuesta № 1

No establezca una acción y un objetivo para cada uno. NSMenuItem. Establecer la acción y el objetivo para el NSPopupButton en lugar. Entonces, sender será el NSPopupButton instancia y puede utilizar rowForView.

El inconveniente es, por supuesto, que no puede tener diferentes acciones para diferentes elementos del menú.