NSMenu - >添加SubMenu - >接收选择事件

时间:2011-01-26 17:28:19

标签: objective-c cocoa xcode nsmenu nsmenuitem

我需要为表格的选定行创建一个菜单, 我可以通过覆盖

来创建
-(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];

先谢谢:)

1 个答案:

答案 0 :(得分:0)

看起来,我没有正确传递选择器方法,实际上我不知道如何在Cocoa中传递函数指针,可能我正在混合Cocoa / Objective C和Normal C两者:),纠正,它,在方法只是创建视图,并在主类/接口中分配目标和操作