【问题标题】:Open NSViewController from function. Menu Bar App从函数中打开 NSViewController。菜单栏应用
【发布时间】:2017-06-19 01:00:59
【问题描述】:

我正在尝试从按下 NSMenuItem 时启动的函数打开 NSViewController。

func settings (sender: NSStatusBarButton) {

    //open NSViewController here?

}

【问题讨论】:

  • 视图控制器与当前类有什么关系?您使用的是故事板还是 xib?
  • 故事板@vadian

标签: swift macos function nsviewcontroller nsmenuitem


【解决方案1】:

假设包含要打开的窗口的NSWindowController 具有故事板ID Settings 并且NSViewController 具有自定义类SettingsController 禁用关联窗口的选项Visible At Launch 并使用此代码

var windowController : NSWindowController!

let mainStoryBoard = NSStoryboard(name: "Main", bundle: nil)
windowController = mainStoryBoard.instantiateController(withIdentifier: "Settings") as! NSWindowController
let settingsController = windowController.window!.contentViewController as! SettingsController
// make initial settings before showing the window
windowController.showWindow(self)

【讨论】:

  • storyboard ID与NSWindowController相关,自定义类与NSViewController相关,当然必须有自定义类文件SettingsController.swift 的子类为NSViewController。我更新了答案。
  • (imgur.com/a/xQlyO) 它现在启动,但是当在菜单栏中单击“显示”时,应用程序退出。在控制台中也收到了这个 (imgur.com/a/xQlyO)
  • 异常的原因是什么?设置异常断点,再次运行应用程序并在崩溃后按一次调试区域中的继续按钮。堆栈跟踪和异常原因应该打印在控制台中
  • 如前所述,SettingsController 必须是NSViewController 的子类(不是NSObject
  • 我这样做了,但仍在接收 SIGBART
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-05
  • 1970-01-01
  • 1970-01-01
  • 2013-03-19
  • 1970-01-01
相关资源
最近更新 更多