gpt4 book ai didi

macos - 在 Storyboard 中使用 NSWindowController 加载工作表

转载 作者:行者123 更新时间:2023-12-03 17:10:54 25 4
gpt4 key购买 nike

我在 Storyboard中有一个 NSWindowController (与 NSViewController 有关系),我需要一张表来加载 NSWindowController 的窗口(实际上是整个应用程序)。我正在使用 beginSheet 方法,但它仅将工作表加载到侧面,并且不会禁用其后面的窗口。如果我向 NSWindowController 添加一个工具栏,并带有一个加载工作表的按钮,它就可以完美工作。不幸的是,我需要在应用程序启动时加载此表。

在以前的应用程序中,我没有使用 Storyboard ,仅使用 xibs,我使用应用程序委托(delegate)的 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 的连接检查器中,对于窗口 Controller 的窗口,我将其设置为窗口 Controller 的窗口,并将窗口 Controller 作为其委托(delegate)。

即使尝试在 NSWindowController 的 windowDidLoad 方法中调用使用工具栏按钮调用的相同方法,仍然会与其窗口断开连接进行加载。

任何方向将不胜感激,我一整天都没有想出任何办法。我正在使用优胜美地。

最佳答案

我能够通过将代码放置在 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)

关于macos - 在 Storyboard 中使用 NSWindowController 加载工作表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29714198/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com