这是一个使用故事板和Swift的Xcode 8.3.3项目.
它不是文档或核心数据应用程序.
我有一个主窗口工作到表视图正确显示记录的点,相关的视图控制器正在接收双击事件并将它们记录到控制台.
我为编辑窗口创建了一个额外的窗口控制器和视图,并通过临时将其标记为初始控制器来验证其基本功能.
我无法弄清楚的是当用户双击一行时如何显示该窗口的新实例.
感谢@Joshua Nozzi,我更接近了.这是此时的代码.
let storyboard = nsstoryboard(name: "Main",bundle: nil)if let windowController = storyboard.instantiateController(withIDentifIEr: "xyzzy") as? NSWindowController{ windowController.showWindow(self)}
它正在产生一个
(Storyboard: 0x620000000680) doesn’t contain a controller with
IDentifIEr ‘xyzzy’
错误.
解决方法 Window Programming Guide是了解windows如何管理的好地方.具体来说(假设您知道如何在故事板中呈现窗口控制器场景),您需要在某处存储对新窗口控制器的引用,以便它们在呈现时不会立即释放(并消失).
在您的情况下,您可能希望在主窗口控制器中保留一组打开的详细信息窗口,这样如果主设备消失,详细信息也会如此.打开详细信息窗口(创建控制器实例并显示其窗口)时,您将其控制器存储在数组中;关闭时,从阵列中删除其控制器,以便取消分配.
有很多方法可以做到这一点,具体取决于你想要多少控制,你希望子窗口所有权如何工作等等,但这种基本模式通常就足够了.
要从故事板中实例化新的窗口控制器场景:
var myWindowController = nsstoryboard(name: "MyStoryboardfilename",bundle: nil)?.instantiateControllerWithIDentifIEr("MyWindowControllerIDentifIEr") as MyWindowControllerClassmyWindowController?.showWindow(self)总结
以上是内存溢出为你收集整理的如何在Swift中使用Cocoa在macOS中打开另一个窗口全部内容,希望文章能够帮你解决如何在Swift中使用Cocoa在macOS中打开另一个窗口所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)