0

テーブルの選択した行のメニューを作成する必要があります。オーバーライドして作成できます

-(NSMenu*)menuForEvent:(NSEvent*)evt 

テーブルの方法、この特定のメニューには2つのサブメニューがあり、サブメニューを作成できますが、次の問題に直面しています

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

前もって感謝します :)

4

1 に答える 1

0

どうやら、私はセレクターメソッドを適切に渡していません。実際、Cocoa で関数ポインターを渡す方法がわかりません。おそらく、Cocoa/Objective C と Normal C の両方を混合しています :)、修正されました。ビューを作成し、メインクラス/インターフェースでターゲットとアクションを割り当てる

于 2011-01-27T05:52:36.370 に答える