如何在Swift中使用Cocoa在macOS中打开另一个窗口

如何在Swift中使用Cocoa在macOS中打开另一个窗口,第1张

概述我正在开发一个macOS应用程序,它在表格视图中显示客户主记录列表.双击表视图中的行应打开一个新窗口,用户可以在其中查看和编辑客户信息. 这是一个使用故事板和Swift的Xcode 8.3.3项目. 它不是文档或核心数据应用程序. 我有一个主窗口工作到表视图正确显示记录的点,相关的视图控制器正在接收双击事件并将它们记录到控制台. 我为编辑窗口创建了一个额外的窗口控制器和视图,并通过临时将其标记为初 我正在开发一个macOS应用程序,它在表格视图中显示客户主记录列表.双击表视图中的行应打开一个新窗口,用户可以在其中查看和编辑客户信息.

这是一个使用故事板和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中打开另一个窗口所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1006083.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存