/ / Ottieni riga di NSPopUpButton in vista NSTableView - obiettivo-c, cacao, interfaccia-builder, nstableview

Ottieni riga di NSPopUpButton in vista NSTableView - obiettivo-c, cacao, interfaccia-builder, nstableview

Ho una vista tabella basata su vista con una riga contenente NSPopupButtons. Quando l'utente cambia il popUpButton, ho bisogno di ottenere la riga della tabella in cui è contenuto questo popUpButton.

Prima mi aspettavo di ottenere la fila con

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

Ma il mittente dell'azione è sempre a NSMenuItem oggetto non il NSPopUpButton. NSMenuItem tuttavia non è una vista quindi non posso usare rowForView con quello.

Attualmente la mia IBAction si presenta così:

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

Ma la proprietà view non viene impostata automaticamente e trovo abbastanza scomodo impostare manualmente per ogni NSMenuItem.

Non c'è un modo semplice per ottenere la fila del tavolo?

risposte:

0 per risposta № 1

Non impostare un'azione e un obiettivo per ciascuno NSMenuItem. Imposta l'azione e il bersaglio per il NSPopupButton anziché. Poi, sender sarà il NSPopupButton istanza e puoi usare rowForView.

Lo svantaggio è ovviamente che non è possibile avere azioni diverse per voci di menu diverse.