objective-c - 如何创建状态栏弹出 View (菜单)?

标签 objective-c macos nsmenu nsstatusitem

enter image description here

顶部的三角形看起来很漂亮,但我无法构建这样的三角形。

我尝试编写如下代码,但我看到了一个普通的菜单。

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {// Insert code here to initialize your application

NSStatusItem * statusItem = [[[NSStatusBar systemStatusBar] statusItemWithLength:110] retain];
[statusItem setTitle:@"Test"];
[statusItem setEnabled:YES];
[statusItem setHighlightMode:YES];

statusItem.menu = [[NSMenu alloc] initWithTitle:@"menu"];
NSMenuItem * menuItem = [[NSMenuItem alloc] initWithTitle:@"menuItem1" action:NULL keyEquivalent:@""];
[statusItem.menu addItem:menuItem]; }

enter image description here

请帮我做点什么来实现它。非常感谢!

最佳答案

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification{
// Insert code here to initialize your application

NSStatusItem * statusItem = [[[NSStatusBar systemStatusBar] statusItemWithLength:110] retain];
[statusItem setTitle:@"Test"];
[statusItem setEnabled:YES];
[statusItem setHighlightMode:YES];
[statusItem setTarget:self];
[statusItem setAction:@selector(showPopover:)];
}

- (void) showPopover:(id)sender {
NSLog(@"sender is: %@", sender);
RSTestPopoverViewController * viewController = [[RSTestPopoverViewController alloc] initWithNibName:@"RSTestPopoverViewController" bundle:nil];
NSPopover * popover = [NSPopover new];
popover.contentViewController = viewController;
[popover showRelativeToRect:NSZeroRect ofView:(NSView *)sender preferredEdge:NSMinYEdge];
}

popover回调的参数是NSStatusBarButton类的实例。 这是我的控制台中的输出。

2013-01-20 23:08:36.602 TestMacWindow[1190:303] sender is: <NSStatusBarButton: 0x101917d10>

关于objective-c - 如何创建状态栏弹出 View (菜单)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14425129/

相关文章:

macos - 在终端(OSX)中创建大量指定大小的文件?

swift - NSCollectionView : How to prevent right click selection?

macos - 具有自定义 NSMenu/MenuItems 和拖放功能的 Mac OSX NSStatusItem

objective-c - NSMenu 以编程方式选择项目

ios - 如何控制 appdelegate 中的 View Controller ?

ios - 为什么 "+ (void)setAnimationStartDate:(NSDate *)startDate;"不起作用

ios - 更改 UIImageview 形状矩形的默认形状

objective-c - 向使用 BWToolkit 的 App Store 提交应用程序

cocoa - 强制更新 Cocoa 应用程序主菜单的 NSMenu(嵌套子菜单)

iphone - 如何使用 parse.com 访问关系中的数据