1

我正在使用此代码将弹出按钮添加到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”,它什么也不显示:

空选

4

1 回答 1

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];
}
于 2012-09-18T16:11:31.687 回答