【问题标题】:OS X 10.10 Yosemite - Adding a menuletOS X 10.10 Yosemite - 添加菜单
【发布时间】:2024-11-06 15:50:02
【问题描述】:

我是 OSX 编程的新手,最近开始了一个针对 OS X 10.10 的演示项目。找到这个 -> http://cocoatutorial.grapewave.com/tag/menulet/ 在 OSX 状态栏中添加菜单的好教程。问题是我的项目使用的是 swift 语言,方法和项目结构/文件有些不同。我想知道是否有人在优胜美地上成功尝试过这个?谢谢。

编辑:具体问题是如何替换 awakefromnib 方法以使用当前的 AppDelegate.swift 语法?

【问题讨论】:

    标签: macos swift xcode6 osx-yosemite


    【解决方案1】:

    整个事情就是这样......

    class AppDelegate: NSObject, NSApplicationDelegate {
    
        @IBOutlet var window: NSWindow // Remove this and delete window in IB to remove window
        // ... also, remove MainMenu from IB.
        @IBOutlet var statusMenu: NSMenu
        var statusItem: NSStatusItem? = nil
    
        func applicationDidFinishLaunching(aNotification: NSNotification?) {
            // Insert code here to initialize your application
        }
    
        func applicationWillTerminate(aNotification: NSNotification?) {
            // Insert code here to tear down your application
        }
    
        override func awakeFromNib() {
            self.statusItem = NSStatusBar.systemStatusBar().statusItemWithLength(CGFloat(NSVariableStatusItemLength))
            self.statusItem!.menu = self.statusMenu
            self.statusItem!.title = "Status"
            self.statusItem!.highlightMode = true
        }
    
        @IBAction func doSomethingWithMenuSelection(sender : AnyObject) {
            println("Action pressed")
        }
    
    }
    

    我刚刚从您的链接中复制了它,并翻译成 Swift。它仍然显示一个窗口等,应该很容易删除... UPDATE 显示了如何...

    (当然我在 Yosemite 上运行它)

    【讨论】:

    • 感谢@Grimxn。 .xib 文件看起来与上面的链接有点不同,但它可以工作。
    • 我刚刚创建了一个沼泽标准 Xcode 应用程序。我猜你指向的文章指定了一些东西,但我只阅读了他们的代码!