NSPopUpButton没有选择正确

时间:2012-09-17 19:21:33

标签: cocoa selection objective-c-2.0 nspopupbutton

我正在使用此代码向NSView添加弹出按钮:

if (popupButton) [popupButton release];
popupButton = [[NSPopUpButton alloc] initWithFrame:NSMakeRect(0, 0, SHEET_WIDTH/2, 32) pullsDown:true];
NSMenu *menu = [[NSMenu alloc] init];
for (NSString *title in anArray)
    [menu addItemWithTitle:title action:NULL keyEquivalent:@""];
[popupButton setMenu:menu];
[self addView:popupButton aligned:KOAlignmentCenter];

当我启动我的应用时,按钮没有选择。当用户单击它并选择其中一个项目时,该按钮保持为空。例如,如果有3个可能的选择(item1,item2& item3),并且用户点击第二个,而不是显示'item2'它没有显示任何内容:

empty selection

1 个答案:

答案 0 :(得分:4)

我不知道为什么你没有出现任何东西,因为当我尝试你的代码时,我确实得到anArray中的第一个项目出现。但是,从列表中选择项目并不会更改显示的内容,这是下拉类型按钮的预期行为。来自Apple的文档:

  

下拉列表通常会显示在弹出窗口旁边   按钮的方式与子项旁边显示的子菜单相同。   与弹出列表不同,弹出按钮的标题显示下拉列表   列表不是基于当前选定的项目,因此保持不变   修复,除非你使用单元格的setTitle:方法进行更改。

您也不需要任何一个菜单语句,您可以在循环中使用NSPopupButton方法addItemWithTitle:。所以在没有菜单命令的情况下尝试它,并明确地使用setTitle:如果你仍然没有得到任何最初显示的东西。或者,您可以更改为弹出窗口而不是拉下来,然后您就不会遇到设置标题的问题。

这就是我要做的测试:

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {

    NSArray *anArray = @[@"One",@"Two",@"Three",@"Four"];
    _popupButton = [[NSPopUpButton alloc] initWithFrame:NSMakeRect(100, 200, 200, 32) pullsDown:TRUE];
    for (NSString *title in anArray)
        [_popupButton addItemWithTitle:title];
    [self.window.contentView addSubview:_popupButton];
}