Macos 从appdata中的menuitem加载情节提要
这一定比我想象的要简单得多 我有一个Main.storyboard,在应用程序加载时启动。我有一个系统菜单,其中一个菜单项需要加载脚本对话框Macos 从appdata中的menuitem加载情节提要,macos,swift,cocoa,storyboard,statusbar,Macos,Swift,Cocoa,Storyboard,Statusbar,这一定比我想象的要简单得多 我有一个Main.storyboard,在应用程序加载时启动。我有一个系统菜单,其中一个菜单项需要加载脚本对话框 func applicationDidFinishLaunching(aNotification: NSNotification) { // Insert code here to initialize your application statusBarItem = statusBar.statusItemWithLength(-1)
func applicationDidFinishLaunching(aNotification: NSNotification) {
// Insert code here to initialize your application
statusBarItem = statusBar.statusItemWithLength(-1)
statusBarItem.menu = menu
statusBarItem.title = "WP"
var options = NSMenuItem(title: "Options ...", action: nil, keyEquivalent: "")
var quit = NSMenuItem(title: "Quit", action: Selector("terminate:"), keyEquivalent: "q")
menu.addItem(options)
menu.addItem(quit)
}
选项变量“action”需要加载情节提要。我是否可以在AppDelegate中访问它 如果我理解正确,您的应用程序看起来完全是一个状态栏应用程序(启动时没有出现窗口?) 所以基本上你需要实例化,然后打开窗口。也许是这样的 在“
ApplicationIDFinishLaunching
”函数中:
var menuItem : NSMenuItem = NSMenuItem()
menuItem.title = "Options ..."
menuItem.action = Selector("bringUpOptionsWindow:")
menuItem.target = self
menuItem.keyEquivalent = ""
menuItem.enabled = true
menu.addItem(menuItem)
// ...
// and then later on
// ...
func bringUpOptionsWindow(sender : AnyObject)
{
let storyboard = NSStoryboard(name: "Main", bundle: nil)
let myController = storyboard.instantiateControllerWithIdentifier("MyOptionsWindowController") as! NSWindowController
myController.showWindow(sender)
}
当你说“加载故事板”时,你的意思是想从故事板加载NSWindowController(或子类)吗?它是来自故事板的NSWindowController。实际上它可以正常工作。它出现了,然后马上就消失了。内存管理器会清理它吗?如果我让控制器成为appdata成员,它会工作的!