我正在尝试在Swift中构建一个骨架应用程序,我基本上只有一个菜单栏图标,没有窗口.从Xcode中的一个新的Storyboard项目开始,它最初工作,但试图摆脱窗口,它似乎不想再运行.我有以下内容:
import Cocoa
import AppKit
@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {
var window = NSWindow()
var statusBar = NSStatusBar.systemStatusBar()
var statusBarItem : NSStatusItem = NSStatusItem()
override func awakeFromNib() {
statusBarItem = statusBar.statusItemWithLength(-1)
statusBarItem.title = "Test"
}
func applicationDidFinishLaunching(aNotification: NSNotification) {
sleep(10);
}
func applicationWillTerminate(aNotification: NSNotification) {
// Insert code here to tear down your application
}
}
Run Code Online (Sandbox Code Playgroud)
在AppDelegate.swift中(基于本教程).通过Xcode运行时,我收到一些警告:
2015-06-23 22:20:28.444 PENCloud[19491:3303755] Failed to connect (colorGridView) outlet from (NSApplication) to (NSColorPickerGridView): missing setter or instance variable
2015-06-23 22:20:28.444 PENCloud[19491:3303755] Failed to connect (view) outlet from (NSApplication) to (NSColorPickerGridView): missing setter or instance variable
Run Code Online (Sandbox Code Playgroud)
从一些谷歌搜索,似乎我应该能够忽略这些,但我statusBarItem不再出现.我错过了什么?
你需要拥有main.swift如下代码.
import Cocoa
class AppDelegate: NSObject, NSApplicationDelegate {
var statusBarItem : NSStatusItem!
func applicationDidFinishLaunching(aNotification: NSNotification) {
statusBarItem = statusBar.statusItemWithLength(-1)
statusBarItem.title = "Test"
}
func applicationWillTerminate(aNotification: NSNotification) {
// Insert code here to tear down your application
}
}
autoreleasepool { () -> () in
let app = NSApplication.sharedApplication()
let delegate = AppDelegate()
app.delegate = delegate
app.run()
}
Run Code Online (Sandbox Code Playgroud)
文件名必须是main.swift.否则你将Expressions are not allowed at the top level在autoreleasepool的行上得到错误.
我在这里找到答案:https: //stackoverflow.com/a/26322464/338986
| 归档时间: |
|
| 查看次数: |
868 次 |
| 最近记录: |