Dav*_*son 7 macos cocoa swift xcode8
我正在开发一个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)
}
Run Code Online (Sandbox Code Playgroud)
它正在产生一个
(故事板:0x620000000680)不包含标识符为'xyzzy'的控制器
错误.
Jos*_*zzi 11
该窗口编程指南是一个伟大的地方,了解窗口是如何在一般管理.
具体来说(假设您知道如何在故事板中呈现窗口控制器场景),您需要在某处存储对新窗口控制器的引用,以便它们在呈现时不会立即释放(并消失).
在您的情况下,您可能希望在主窗口控制器中保留一组打开的详细信息窗口,这样如果主设备消失,详细信息也可以.打开详细信息窗口(创建控制器实例并显示其窗口)时,您将其控制器存储在数组中; 关闭时,从阵列中删除其控制器,以便取消分配.
有很多方法可以做到这一点,具体取决于你想要多少控制,你希望子窗口所有权如何工作等等,但这种基本模式通常就足够了.
要从故事板中实例化新的窗口控制器场景:
var myWindowController = NSStoryboard(name: "MyStoryboardFileName", bundle: nil)?.instantiateControllerWithIdentifier("MyWindowControllerIdentifier") as MyWindowControllerClass
myWindowController?.showWindow(self)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6220 次 |
| 最近记录: |