Cocoa NSPopupButton 问题

Posted

技术标签:

【中文标题】Cocoa NSPopupButton 问题【英文标题】:Cocoa NSPopupButton Problem 【发布时间】:2011-01-14 08:05:22 【问题描述】:

在我的 Cocoa 应用程序中,在一个视图中,我通过 Interface builder 添加了一个 NSPopupButton 并将其与源文件相应地链接, 现在在代码中,我正在动态创建菜单并使用 NSPopupbutton 添加菜单, 这是我在 WindowDidLoad 中完成的 请参考下面的代码

 NSString *pThemeName;
 for(;index<count;index++)
 
  pThemeName = [pThemeArray objectAtIndex:index];

  /* If its valid them go ahead and add that into the 
     list 

   */
  if([CommFileManager IsValidThemeName:pThemeName])
   menuItem = [[NSMenuItem alloc] initWithTitle:pThemeName action:@selector(selectThemeName) keyEquivalent:@""];
   [menuItem setTarget:self];
   [pPopUpmenu addItem:menuItem];
   [menuItem setTag:index];
   [menuItem release];
  
 
 [pPopupButton setTarget:self];
 [pPopupButton setMenu:pPopUpmenu];
 [pPopupButton selectItem:[pPopUpmenu itemAtIndex:5]];
 [pPopUpmenu release];

当我运行应用程序时,最初按钮是启用的,但是当我单击箭头时,包括菜单和按钮被禁用

请告诉我我做错了什么。

【问题讨论】:

它看起来不错,尽管您在弹出按钮上调用setTarget: 而不设置操作。由于您要为每个菜单项添加操作,因此只需不指定按钮本身的目标/操作即可。 嗨,我也试过了,没有运气:( 【参考方案1】:

您需要启用 NSPopUpButton 的操作。 Target 是可选的(因为 nil 表示第一响应者)。

您不需要为菜单项设置目标/操作,因为弹出窗口可以告诉您在针对目标调用其操作时选择了哪个项目。

【讨论】:

以上是关于Cocoa NSPopupButton 问题的主要内容,如果未能解决你的问题,请参考以下文章

使用 NSManagedObject 子类将 NSPopupButton 绑定到 NSArrayContraller

NSPopUpButton:多个值和 selectedIndex 绑定

NSPopUpButton 在 Swift Playground 中灰显

基于视图的 NSTableView 中的 NSPopupButton

如何以编程方式控制 NSPopUpButton 上的 TAB 按键事件

根据 NSPopupButton 中的选择更新 NSTextField