如何在一个Swift 4 Cocoa应用程序中一开始就弹出两个窗口?

如何在一个Swift 4 Cocoa应用程序中一开始就弹出两个窗口?,swift,xcode,cocoa,nsstoryboard,Swift,Xcode,Cocoa,Nsstoryboard,我正在使用XCode 9开发一个Swift 4 Cocoa Mac OS X(不是iOS)项目。在我的主故事板中有两个NSWindows,其中包含NSViews的不同(子类)。目前只有一个窗口保存故事板入口点,因此当应用程序开始时,另一个窗口不会出现,我希望在加载应用程序时两个窗口都出现 我尝试过用不同的关键词进行谷歌搜索,但到目前为止还没有找到一种方法。我找到的唯一方法是将一个窗口中的按钮或菜单的序列连接到另一个窗口,以便在按下按钮时显示另一个窗口。是否有任何方法可以使两个窗口都以“正确的方式

我正在使用XCode 9开发一个Swift 4 Cocoa Mac OS X(不是iOS)项目。在我的主故事板中有两个
NSWindow
s,其中包含
NSView
s的不同(子类)。目前只有一个窗口保存故事板入口点,因此当应用程序开始时,另一个窗口不会出现,我希望在加载应用程序时两个窗口都出现


我尝试过用不同的关键词进行谷歌搜索,但到目前为止还没有找到一种方法。我找到的唯一方法是将一个窗口中的按钮或菜单的序列连接到另一个窗口,以便在按下按钮时显示另一个窗口。是否有任何方法可以使两个窗口都以“正确的方式”(最好使用XCode情节提要的功能)出现在开头?

您必须从要显示的第二个窗口获取情节提要中窗口控制器的引用。将此代码添加到
applicationdFinishLaunching
中的
nsapplicationelegate
。不要忘记在情节提要中设置WindowController的标识符

let storyboard = NSStoryboard(name: "Main", bundle: nil)
let windowController = storyboard.instantiateController(withIdentifier: "MyWindowController") as! NSWindowController
windowController.showWindow(self)

你试过这个吗?窗口不是真正的元素。本教程将引导您了解视图的基本用法,这些用法可能有助于您写下真正的需求。感谢您的输入。现在我发现我需要研究应用程序的精确结构(类到底做什么,类之间如何交互等等)。@Efren阅读iOS教程/资源了解Mac OS Cocoa编程可以吗?当我开始学习时,我跳过了你提到的教程,因为它是针对iOS的,但现在我觉得它们非常相似。@Efren如果你不介意的话,你能推荐一些资源,让初学者准确地理解Cocoa应用程序的结构吗?我会做我的搜索,但我在网上看到的资源似乎要么没有很好地描述内部机制,要么太过技术化,难以消化(假设事先了解Cocoa课程)。是的,遗憾的是,苹果大多没有更新到swift。这可能特别有用。最后一个网站特别帮助我解决了doc中的iOS漏洞,尽管有些页面可能是以前的swift版本。它的工作非常有魅力。我们将仔细阅读文档,了解背后发生的事情。谢谢我认为这是值得添加的:因为我们正在从主情节提要添加一个控制器,所以我们不需要实例化另一个名为“main”的情节提要,只需转到
NSStoryboard.main!。实例化控制器
调用。但现在我怀疑两个出现的窗口在同一个“主”情节提要中是否有好处。这是否好将取决于每种情况。如果使用其他情节提要,我们应该手动实例化
NSStoryboard
对象。当然,对于第一个问题,您也可以使用main进行实例化,但我想概述一下如何引用项目中的任何情节提要。这取决于您以及您是否希望所有窗口都位于一个或多个故事板中。我通常为每个窗口使用不同的故事板。(例如,首选项、关于面板)最后,无论您如何组织,它们都将以单独的xib文件结束。