我尝试通过故事板segue(OSX)显示NSViewController
。打开窗口将是一个检查窗口,因此它应该是非模态的。
当我通过按住Ctrl键从触发按钮拖动到窗口控制器来创建动作segue时,我提供了以下segue样式选项:
前三个选项显然不合适。
我确定我可以创建自定义segue来显示视图。这将涉及创建一个类,实现一些方法等。
然而,由于我的要求对我来说似乎很基本,我想知道我是否遗漏了一些东西 很明显,这是一种通过画布打开非模态窗口的简单方法。
我正在使用XCode6-Beta3。
答案 0 :(得分:13)
至少现在(Beta3),非模态视图需要有自己的窗口,而且没有简单的方法为它创建一个segue。
而是将新的Window Controller对象拖到Storyboard上。它将带有自己的内容视图作为关系Segue。但是,如果要为窗口使用不同的视图(例如:选项卡视图控制器),只需删除新的视图控制器并从新的窗口控制器进行控制拖动,即可将其视图用于视图控制器。窗口内容。
重要提示: 在故事板中选择Window Controller对象,并在Identity Inspector中,将Storyboard ID设置为一个标识窗口的字符串(例如:“检查员“)。
然后,只需编写一些代码来显示窗口:
var inspectorController: NSWindowController?
@IBAction func showInspector(sender : AnyObject) {
if !inspectorController {
let storyboard = NSStoryboard(name: "Main", bundle: nil)
inspectorController = storyboard.instantiateControllerWithIdentifier
("Inspector") as? NSWindowController
}
if inspectorController { inspectorController!.showWindow(sender) }
}
我实际上发现将 更好地用于任何窗口的主故事板。其中一个原因是因为使用Storyboard(至少现在),在应用程序启动时无法拦截初始segue,并且永远不会在主窗口控制器上调用windowWillLoad。
相反,为Application和/或Document窗口创建单独的故事板,并使用AppDelegate类来实例化它们。更多信息和工作示例in this thread.