/ / Liefert eine Reihe von NSPopUpButton in view-basiertem NSTableView - Objective-C, Cocoa, Interface-Builder, NSTABLEView

Rufen Sie die Zeile von NSPopUpButton im viewbasierten NSTableView ab - objective-c, cacao, interface-builder, nstableview

Ich habe eine Ansicht basierte Tabellenansicht mit einer Zeile, die NSPopupButtons enthält. Wenn der Benutzer das popUpButton ändert, muss ich die Tabellenzeile erhalten, in der dieses popUpButton enthalten ist.

Ich habe zuerst damit gerechnet, die Reihe mit zu kriegen

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

Aber der Absender der Aktion ist immer ein NSMenuItem Objekt nicht das NSPopUpButton. NSMenuItem ist jedoch keine ansicht also kann ich nicht verwenden rowForView damit.

Momentan sieht meine IBAction so aus:

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

Die view -Eigenschaft wird jedoch nicht automatisch festgelegt, und ich finde es ziemlich unpraktisch, sie für jedes NSMenuItem manuell festzulegen.

Gibt es keine einfache Möglichkeit, die Tabellenzeile abzurufen?

Antworten:

0 für die Antwort № 1

Legen Sie keine Aktion und kein Ziel für jedes fest NSMenuItem. Legen Sie die Aktion und das Ziel für die fest NSPopupButton stattdessen. Dann, sender wird sein NSPopupButton Instanz und Sie können verwenden rowForView.

Der Nachteil ist natürlich, dass Sie für verschiedene Menüpunkte keine unterschiedlichen Aktionen ausführen können.