0

pullDown を使用して NSPopUpButton を作成し、いくつかのメニュー項目 (画像とタイトル) をメニューに追加し、そのメニューを Button セルに追加しました。

最初に、メニューの最初のメニュー項目を Button セルに割り当てて、NSPopUpButton に表示します。

NSPopUpButton をタップすると、以前に追加したすべての項目を含むメニューが表示され、メニューから項目を選択すると、そのデータが NSPopUpButton に更新されません。つまり、タイトルは更新されていますが、画像は更新されていません..

どうすればこれを解決できますか?

私が書いたコード:

In ButtonCell class:

NSMenu* newMenu = [[NSMenu alloc] initWithTitle:@""];
    [newMenu setAutoenablesItems:YES];
    [[self optionMenuController] insertItemsInMenu:newMenu atIndex:0];
    if(isFromSetOption)
    {
        [self setMenuItem:[newMenu itemAtIndex:1]];
        isFromSetOption = NO;
    }
    //[newMenu insertItemWithTitle:@"dummy" action:nil keyEquivalent:@"" atIndex:0];
    [self setMenu:newMenu];

    [newMenu release];

In OptionMenuController :
- (void) insertItemsInMenu:(NSMenu*)menu atIndex:(NSInteger)insertIndex
{
    for( NSMenuItem* item in [self createMenuItems] )
    {
        [menu insertItem:item atIndex:insertIndex++];
    }
}
- (NSMenuItem*) menuItemForOption:(AMOptionMenuItem*)option inGroup:(AMOptionMenuItem*)group
{
    NSMenuItem *menuItem = [[NSMenuItem alloc] initWithTitle:[option title] action:@selector(optionChosen:) keyEquivalent:@""];

    [menuItem setIndentationLevel:1];
    [menuItem setTarget:self];
    [menuItem setEnabled:YES];
    [menuItem setImage:[NSImage imageNamed:[option imageTitle]]];
  /*  if([[option identifier] isEqualToString:@"Color"])
    {
        [menuItem setImage:[NSImage imageNamed:@"cabinet"]];
    }
    else{
        [menuItem setImage:[NSImage imageNamed:@"YieldIcon.png"]];
    }
    */


    NSString* keypath = [NSString stringWithFormat:@"%@.is%@", [group identifier], [option identifier]];
    [menuItem setRepresentedObject:keypath];

    NSDictionary *bindingOptions = nil;
    [menuItem bind:@"value" toObject:self withKeyPath:keypath options:bindingOptions];

    return [menuItem autorelease];
}
4

0 に答える 0