2011-01-26 2 views
0

Мне нужно создать меню для выбранной строки таблицы, я могу создать путем переопределенияNSMenu -> Добавление SubMenu -> получить выберите событие

-(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]; 

Заранее спасибо :)

+0

Вы уверены, что ваш делегат реализует метод MyMenuAction, который не принимает никаких параметров? Часто методы действий принимают параметр отправителя, но ваш селектор не будет соответствовать такому действию (потому что в конце нет двоеточия). Btw, методы именования с префиксом «get» считаются плохим стилем в Cocoa (с некоторыми, очень специфическими исключениями), а имена методов обычно начинаются с строчной буквы. – omz

+0

Привет, похоже, я не передаю метод селектора правильно, на самом деле я не знаю, как передать указатель функции в Cocoa, возможно, я смешиваю Cocoa/Objective C и Normal C оба :), исправлено, оно, в метод, просто создающий представление и в главном классе/интерфейсе, назначающем цель и действие – Amitg2k12

ответ

0

выглядит, я не проходя метод выбора правильно, на самом деле я не знаю, как передать указатель на функцию в какао, вероятно, я смешивания какао/Objective C и Normal C оба :), исправлено, оно, в методе, просто создающем представление и в главном классе/интерфейсе, назначающем цель и действие