NSPopUpButton не обновляется с изображением, когда выбран NSMenuItem

У меня есть NSPopUpButton с pullDown и я добавил несколько пунктов меню (изображение и заголовок) в меню и добавил это меню в ячейку кнопки.

Первоначально я назначаю пункт меню "Первый" меню ячейке кнопки для отображения в 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];
}

0 ответов

Другие вопросы по тегам