NSMENU -> Hinzufügen von Untermenü -> Auswahlereignis empfangen
-
24-10-2019 - |
Frage
Ich muss ein Menü für eine ausgewählte Zeile einer Tabelle erstellen. Ich kann durch Überschreiben erstellen
-(NSMenu*)menuForEvent:(NSEvent*)evt
Die Methode einer Tabelle hat dieses spezielle Menü zwei Untermenü. Ich kann das Untermenü herstellen, aber das folgende Problem konfrontiert
1-Um ein Untermenü in einem Menuitem hinzuzufügen, muss ich Sub-Menu von einer anderen Klasse/Schnittstelle bekommen. Ich rufe die folgende Methode auf
pSubMenu = [CommonUIUtil GetCommonUIMenu:pSubMenu
ActionId:self
Selector:@selector(MyMenuAction)];
Wo der Prototyp dieser Funktion wie folgt ist
+(NSMenu *)GetCommonStatusMenu:(NSMenu *)pMenu ActionId:(NSObject*)aDelegate Selector:(SEL)selector
Implementierung wie unten,
// pStrArray is Array of String to have the Menu Title
for(int idx =0;idx<[pStrArray count];idx++)
{
pTempStr = [pStrArray objectAtIndex:idx];
pImage = [CommUIController CommonGetImage:[CommonUIUtil GetImageByStatus:pTempStr]];
[pImage setSize:NSMakeSize(20,20)];
pMenuItem =[[NSMenuItem alloc]init];
[pMenuItem setTitle:pTempStr];
// this should set the selector
[pMenuItem setAction:selector];
// Setting the target
[pMenuItem setTarget:aDelegate];
[pMenuItem setImage:pImage];
[pMenuItem setEnabled:YES];
[pMenu addItem:pMenuItem];
[pMenuItem release];
}
return pMenu;
Ich kann das Bild, Zeichenfolge in diesem Untermenü sehen, aber das Problem, mit dem ich ausgesetzt bin, ist, dass dieses Menü überhaupt nicht aktiviert ist. Kann mich jemand führen, wo ich den Fehler mache,
Diese Funktion gibt das Menü und das Menü zurück, das ich unten hinzufügen werde.
pMenuItem = [pCTTableMenu itemWithTitle:@"Status"];
//status menu is the menu returned from the above function,
[pMainMenu setSubmenu:pStatusMenu forItem:pMenuItem];
Vielen Dank im Voraus :)
Lösung
Sieht so aus, dass ich die Selektormethode nicht richtig überschreite, in der Tat weiß ich nicht, wie man den Funktionszeiger in Kakao passt, wahrscheinlich mische ich Kakao/objektiv C und Normal C beides :), korrigiert, es in der Methode gerade Erstellen der Ansicht und in der Hauptklasse/Schnittstelle zuweisen Ziel und Aktion