【发布时间】:2019-08-18 17:22:01
【问题描述】:
我有一个基于文档的应用程序。我覆盖NSDocument 的makeWindowControllers 来实例化自定义窗口控制器。它的初始化程序调用其超类的init(window: NSWindow?),即它不使用任何涉及 nib 文件的初始化程序。
如何使级联工作(请参阅shouldCascadeWindows)?目前每个窗口都在第一个屏幕上的相同位置打开。
我可以通过在NSWindowController 上调用某些东西以某种方式重用现有的级联逻辑吗?
如果我必须自己手动实现它,我应该如何最好地获得最顶部文档窗口的位置?文档中可能有多个窗口中的哪个窗口应该是计算偏移量的窗口?
【问题讨论】:
-
窗口是如何实例化的?第一个窗口的位置是什么?哪个窗口是文档的主窗口?你想从哪个窗口级联?窗口的框架是否自动保存?您是否搜索了级联方法?
-
我想要默认行为,即当您在 Xcode 中创建新的基于文档的应用程序时会得到什么。如果没有默认或推荐位置,我可以为第一个窗口选择一个位置。现在第一个窗口控制器的窗口是主窗口。我想从最顶层的文档窗口级联,无论是默认还是推荐的做法。不确定自动保存的相关性,毕竟这是一个新文档,没有以前的记录。我知道
cascadeTopLeft,但这只是抵消数学。我没有找到其他任何东西。 -
带有“窗口的框架是否自动保存?”我的意思是frameAutosaveName。
-
此时为空字符串。
-
窗口控制器在从 nib 加载窗口后调用
cascadeTopLeft(from:)。如果您提供窗口,您必须致电cascadeTopLeft(from:)。
标签: appkit nsdocument nswindowcontroller