问题标签 [nswindowrestoration]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
cocoa - 恢复 NSTableView 中的选择(NSWindowRestoration)
我正在一个非基于文档的 Cocoa 应用程序中进行窗口恢复。该应用程序具有类似 Mail.app 的界面。每个窗口代表一个帐户;该窗口中的边栏列出了该帐户中的对话,主区域列出了所选对话中的消息。
这些列表中的每一个都是基于视图的NSTableView
. 会话列表绑定到一个绑定到窗口控制器属性NSArrayController
的对象;消息列表绑定到第二个,第二个绑定到第一个的选择。contentSet
account
NSArrayController
contentSet
NSArrayController
我已经完成了我的窗口恢复工作,它重新打开了所有窗口并将它们与帐户对象重新关联,但我不知道如何恢复表视图的选择。这似乎不会自动发生——当窗口恢复时,选择了一个对象,但它不是之前选择的那个。这里发生了什么?保存和恢复选择的最简单方法是什么?
objective-c - NSWindow 可恢复并不总是有效
我已经检查了我的 NSWindow 上的可恢复选项当我移动我的应用程序并更改其大小并关闭/重新打开我的应用程序时,它会将窗口大小和位置设置为最后的大小和位置
但这不会发生在我测试它的每台计算机上。它只发生在几台电脑上
他们没有关于简历的特殊设置。
有没有人有这方面的经验?
objective-c - 如何在可可中保持应用程序状态
我需要在应用程序终止时存储应用程序的状态,以便当用户重新运行应用程序时,应用程序从上次关闭的状态运行。它是某种恢复应用程序,但是当应用程序意外关闭时会调用恢复方法。但是每次用户意外关闭时我都需要恢复应用程序手动关闭它。我只需要存储 App UI 而不是应用程序的数据。任何想法都会对我有所帮助。谢谢
cocoa - 初始 NSWindow 大小占屏幕大小的百分比
我想将我的 NSWindow 大小设置为屏幕大小的函数。
Interface Builder 中有一个选项可以将其设置为点,但不是屏幕大小的函数。
如何以编程方式将其设置为默认值?
请注意,如果此类状态可用,我仍然希望 UI 保留从上一个会话中恢复其大小。
macos - How to programmatically terminate NSApp without encoding window state?
All OS X application that support NSWindowRestoration
can be closed by selecting the menu entry "Quit and Close All Windows" (Option-Command Q). This disables the state restoration and the next time you open the app all windows will be in their default position.
The menu entry triggers the terminate:
method on NSApplication
. But so does the regular "Close App" menu as well (Command Q).
How can I do the "Quit and Close All Windows" programmatically? Do I really have to close all windows by myself and then call terminate:
?
How does Apple magically decide what to do, when both actions are connected to the same terminate:
method?
swift - 恢复嵌套的 NSDocuments
我正在为 MacOS 开发类似 Xcode 的 IDE。IDE 打开源文件(的实例TextDocument
)并具有单独的项目文件(ProjectDocument
包含项目设置的实例。两者都是NSDocument
.
打开源文件时,WindowsController 和 contentViewController 仍然需要访问项目文件。
我最初解决这个问题的方法是var project: ProjectDocument?
向 TextDocument 添加一个属性。这样每个源文件都有一个指向项目文档的指针。视图控制器的representedObject
属性设置为文本文档。
这在创建、打开和保存文件时效果很好。
但是,重新打开应用程序后恢复窗口并非完美无缺。
TextDocument (设置为representedObject
)得到正确恢复,但project
属性没有。确实保存了一些东西,因为在方法中if coder.containsValue(forKey: "project")
返回,但随后返回。好像编码与解码预期的格式不同。true
restoreState(with coder: NSCoder)
self.project = coder.decodeObject(forKey: "project") as? ProjectDocument
nil
如果我更改 ProjectDocument 使其继承自NSObject
而不是NSDocument
,则项目确实会正确恢复。
所以问题似乎是编码NSDocument
实例。
我也尝试将项目文件存储为视图控制器的单独属性,但这有同样的问题。不知何故,NSDocuments 似乎不喜欢被编码。
我希望恢复的project
财产。TextDocument
它不是
swift - NSDocument 选项卡窗口恢复
这个问题处理基于文档的应用程序中的选项卡窗口恢复。
在允许用户创建和转换选项卡窗口的基于文档的 OSX 应用程序中,我需要保留和恢复每个窗口的“选项卡”状态。
目前,我的文档控制器恢复其文档窗口,但不恢复选项卡部署;我找回了单个窗口;我可以将所有内容合并为一个,但这太强硬了,因为他们以前的分组丢失了。
我的应用程序文档类的 -makeWindowControllers()
函数是我影响新控制器的地方,它们是否应该级联,我认为这是错误的,在恢复期间:
所以在它完成启动之前它是错误的。
最后,我的窗口类的功能方法:
在更改选项卡状态时,窗口还原状态无效。但是我不确定NSWindowRestoration
协议的实现,当涉及文档控制器时,谁或什么需要实现协议。
我认为这是最后一个函数从未被调用的原因。我得到有关编码的调试输出,但在下一次应用程序执行期间,该restoreStore(coder:)
函数从未被调用。
所以我想谁在这样的环境中实现这个窗口恢复协议是我的问题,或者是一个很好的例子。