NSMENU -> Добавление Sumenu -> Принять событие выбора
-
24-10-2019 - |
Вопрос
Мне нужно создать меню для выбранной строки таблицы, я могу создать, переопределяя
-(NSMenu*)menuForEvent:(NSEvent*)evt
Метод таблицы, это конкретное меню имеет два подменю, я могу сделать подменю, но столкнувшись с следующей проблемой
1-Чтобы добавить подменю в Menuitem, мне нужно получить подменю из другого класса/интерфейса, я звоню следующему методу
pSubMenu = [CommonUIUtil GetCommonUIMenu:pSubMenu
ActionId:self
Selector:@selector(MyMenuAction)];
Где прототип этой функции следующим
+(NSMenu *)GetCommonStatusMenu:(NSMenu *)pMenu ActionId:(NSObject*)aDelegate Selector:(SEL)selector
Реализация, как ниже,
// 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;
Я могу увидеть изображение, строку в этом подзаденном меню, но проблема, с которой я сталкиваюсь, заключается в том, что это меню вообще не включено, может ли кто -нибудь направить меня, где я делаю ошибку,
Эта функция вернет меню и меню, которое я добавлю, как показано ниже,
pMenuItem = [pCTTableMenu itemWithTitle:@"Status"];
//status menu is the menu returned from the above function,
[pMainMenu setSubmenu:pStatusMenu forItem:pMenuItem];
Заранее спасибо :)
Решение
Похоже, я не передаю метод селектора должным образом, на самом деле я не знаю, как передавать указатель функции в какао, вероятно, я смешиваю какао/объектив C и нормальный C оба :), исправлено, это, в методе просто Создание представления и в основном классе/интерфейсе назначает цель и действие