我已经搜索了如何正确执行此操作,但我不相信我找到了答案。这是我的设置:
NSWindowController 在 2 个不同的 NSViewController 中加载(一次仅显示一个)。当我将文件拖放到已加载的 NSViewController View 上时,我想保存该文件的路径。我可以获得所有这些,但我现在想要做的是,当我交换到另一个 NSViewController 时,我想将此文件路径传递给新的 NSViewController。
我想出的唯一解决方案是将通知从 NSViewController 发布到 NSWindowController,然后使用此数据初始化第二个 NSViewController,但这似乎相当复杂。有没有一种方法可以让我将数据保存为全局实体,然后稍后从我的第二个 NSViewController 访问它?
注意:NSViewController 与其他 Controller 交换后将被释放。
如有任何见解,我们将不胜感激。
更新:我只是要更改应用程序,以便两个 View Controller 始终位于内存中。这样我就可以像其他人建议的那样使用 KVO 或其他方法。
最佳答案
View Controller 用于控制模型对象的 View 。因此,您的每个 View Controller 都必须从某个底层模型对象获取数据,在您的情况下,该对象可能是相同的。如果您没有,我建议您将应用程序重新设计为 MVC 模式。
当您创建 View Controller 时,您可以设置 representedObject属性并将文件名存储为其属性之一。如果您的模型对象符合 KVO,您甚至可以让每个 View Controller 观察模型对象的文件名属性,并在发生更改时使用react。
关于objective-c - 跨 Cocoa 应用程序共享数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6400897/