我在故事板中有一个NSWindowController(与NSViewController有关系),我需要一张表来加载NSWindowController的窗口(实际上是整个应用程序)。我正在使用beginSheet方法,但只将表单加载到一边,它不会禁用它后面的窗口。如果我将一个工具栏添加到NSWindowController,并带有一个按钮来加载工作表,它就可以完美地工作。不幸的是,我需要在应用启动时加载此工作表。
在之前的应用中,我没有使用故事板,只是xibs,我在应用委托的applicationDidFinishLaunching方法中使用beginSheet方法加载了工作表窗口但是如果我在此应用程序中尝试相同的设置,则工作表仅加载到此应用程序的一侧没有禁用主窗口。
启动时可见未经检查。 (我已经足够搜索,看到这通常是人们的问题。)
var sheetWindow = NSWindow(contentRect: NSMakeRect(0, 0, 600, 150), styleMask: NSTitledWindowMask, backing: NSBackingStoreType.Buffered, defer: true)
self.window!.beginSheet(sheetWindow, completionHandler: nil)
在IB的连接检查器中,对于Window Controller的窗口,我将它设置为Window Controller的窗口,我将Window Controller作为其委托。
即使尝试使用NSWindowController的windowDidLoad方法中的工具栏按钮调用相同的方法,仍然会从窗口中断开加载。
任何方向都会受到高度赞赏,我一整天都没有想到。我正在使用约塞米蒂。
答案 0 :(得分:1)
我能够通过将代码放在ViewController类的viewDidAppear()中来解决它,但是将工作表附加到WindowController的窗口。
var sheetWindow = NSWindow(contentRect: NSMakeRect(0, 0, 600, 150), styleMask: NSTitledWindowMask, backing: NSBackingStoreType.Buffered, defer: true)
let windowController = self.view.window?.windowController() as! windowController
windowController.window!.beginSheet(sheetWindow, completionHandler: nil)