我面临一个奇怪的情况.我NSMenu有一个子菜单.子菜单的内容以编程方式填充.在我的validateMenuItem:方法中,我可以看到所有被检查的项目(父项的项目)以及子项目(一旦我点击子菜单),除了我自动填充的子菜单中的项目.
这是为什么?难道我做错了什么?关于如何解决这个问题的任何想法?
当App Store有更新时,它会在菜单项中显示内联样式元素,如下面屏幕截图中的"1 new":

另一个我们可以看到这种菜单的地方是10.10 Yosemite的分享菜单.当您安装添加新共享扩展程序的任何应用时,共享菜单中的"更多"项目将显示"N new",就像应用商店菜单一样.
'App Store ...'项看起来很正常NSMenuItem.是否有一种简单的方法来实现它,或者是否有任何支持它的API而没有为菜单项设置自定义视图?
我有一个带有两种类型窗口的可可应用程序,每种窗口都需要显示不同的主菜单.
在我的MainMenu.xib中,我有默认的MainMenu.在Window1.xib中我有Window1,在Window2.xib中我有Window2,它是MainMenu.
当我打开第一个窗口时,我有默认菜单,当我打开Window2时,我得到它的菜单.
但是,当我切换回Window1时,我仍然看到Window2的菜单.如何使显示的菜单跟随关键窗口?
在MainMenu.xib中我删除了默认的主菜单,它自动为您提供应用程序菜单(以及文件/编辑/格式/视图/窗口/帮助菜单).
将这个添加回我的应用程序需要采取哪些步骤?
我找到了一群人问这个(删除或禁用最近的项目子菜单),没有答案.
经过一番调查......问题是Apple已秘密硬编码该特定菜单总是出现 - 即使你删除它,NSWindowController也会默默地重新创建它.
我目前正在努力使用Mac OS X中的动态UI.我创建了一个菜单栏项,并希望在其中添加动态计数的MenuItems.
元素的数量取决于计算机上的网络接口.我的Mac有两个接口,另一个可能只有一个或三个.
元素的创建不是问题.但是我想在后面的代码中引用这些元素.
-(void)addItems
{
NSMenuItem *menuItem = [menu addItemWithTitle:@"Start" action:@selector(click:) keyEquivalent:@""];
}
Run Code Online (Sandbox Code Playgroud)
然后我想更新元素的标题:
-(IBAction)click:(id)sender
{
[menuItem setTitle:@"Clicked!"];
}
Run Code Online (Sandbox Code Playgroud)
原因是,"click"动作返回未声明的标识符(menuItem).问题是,我不能在头文件中声明它们,因为它们是动态的,它们可能达到100个项目的数量,因此我不能声明10个项目并使用它们.
我该如何处理这些情况?希望你能帮我!
招呼,朱利安
我正在尝试在我的应用程序中创建一个NSMenu.我成功地创建了一些固定项目的菜单,现在我必须以编程方式添加一些项目.我也成功了,但它将项目添加到其他项目的底部.有一种方法可以将这个以编程方式创建的项目放在固定项目之间吗?这是我的代码:
.H:
@interface AppController : NSObject {
IBOutlet NSMenu *statusMenu;
NSStatusItem *statusItem;
}
Run Code Online (Sandbox Code Playgroud)
.M
[statusMenu setAutoenablesItems:NO];
statusItem = [[NSStatusBar systemStatusBar] statusItemWithLength:NSVariableStatusItemLength];
[statusItem setMenu:statusMenu];
NSImage *statusImage = [[NSImage alloc] initWithContentsOfFile:@"Icon.icns"];
[statusItem setImage:statusImage];
[statusItem setTitle:@"Multibox"];
[statusItem setHighlightMode:YES];
NSMenuItem *item = [[NSMenuItem alloc] initWithTitle:@"Carlo | 0000000000"
action:@selector(fooClicked:) keyEquivalent:@""];
[item setTarget:self];
[statusMenu addItem:item];
Run Code Online (Sandbox Code Playgroud) 我希望我的状态菜单在单击时调用一个函数。让我分配该操作的方法是什么?类似于下面的菜单本身。
NSMenuItem* item = [[NSMenuItem alloc] initWithTitle:@"Title" action:@selector(doX) keyEquivalent:@""];
我有一个带有2个窗口的应用程序(想像Twitter时间轴和提及).目前我在"文件"菜单中有"时间轴⌘1"和"提及⌘2"菜单,但这有点不对劲.所以我只是通过拖放将它们移动到"Windows"菜单.
当我打开应用程序时,一切都很好,我可以在"Windows"菜单中查看两个菜单项.但是当我关闭例如提及窗口时,菜单项"提及⌘2"消失,我无法再打开此窗口.
我看过其他应用程序,其中大多数都有自己的菜单项来显示"Windows"菜单中的窗口,它们在关闭窗口后也不会消失.我知道Cocoa使用"Window"菜单项进行躯体魔术,这样做非常好(因为我打开了一些需要出现并从那里消失的其他窗口),但我怎么能让那两个物品有什么静电所以它们不会消失?
我想NSMenu在用户右键单击 aNSTableCellView中的a时弹出a NSTableView。
let cell = myTableView.make(withIdentifier: "myCustomTableCellView", owner: self) as! MyTableCellView // subclass of NSTableCellView
let menu = NSMenu()
menu.autoenablesItems = false
menu.addItem(NSMenuItem(title: "Test", action: nil, keyEquivalent: ""))
cell.menu = menu
Run Code Online (Sandbox Code Playgroud)
但是如果用户单击单元格,则不会弹出菜单。
我找不到任何sendActionOn方法或类似的东西。
如果有人可以提供帮助,那就太好了!
nsmenu ×10
cocoa ×8
macos ×7
nsmenuitem ×5
objective-c ×5
add ×1
dynamic ×1
nstableview ×1
nswindow ×1
swift ×1