小编hil*_*nde的帖子

OSX状态菜单在Swift中不起作用

我尝试使用swift向状态栏添加一个简单的状态菜单,但不会显示.

与Objective-c一起工作:


AppDelegate.h

@interface AppDelegate : NSObject <NSApplicationDelegate> {
    IBOutlet NSMenu *statusMenu;
    NSStatusItem * statusItem;
}

@end
Run Code Online (Sandbox Code Playgroud)

AppDelegate.m

@implementation AppDelegate

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
    statusItem = [[NSStatusBar systemStatusBar] statusItemWithLength:NSVariableStatusItemLength];
    [statusItem setMenu:statusMenu];
    [statusItem setTitle:@"Status Menu"];
    [statusItem setHighlightMode:YES];
}

@end
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试在swift中基本上做同样的事情,它什么都不做.

class AppDelegate: NSObject, NSApplicationDelegate {

    @IBOutlet var statusMenu: NSMenu;

    func applicationDidFinishLaunching(aNotification: NSNotification?) {
        let bar = NSStatusBar.systemStatusBar()

        let statusItem = bar.statusItemWithLength(CGFloat(NSVariableStatusItemLength))
        statusItem.title = "Status Menu"
        statusItem.menu = statusMenu
        statusItem.highlightMode = true
    }

}
Run Code Online (Sandbox Code Playgroud)

没有错误,它只是没有做任何事情.函数applicationDidFinishLaunching被调用,因为它内部的println()创建输出.

有谁知道我在这里做错了什么?

macos cocoa swift

3
推荐指数
1
解决办法
3018
查看次数

标签 统计

cocoa ×1

macos ×1

swift ×1