我正在使用此代码向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'它没有显示任何内容:
答案 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];
}