2

我正在开发一个 Mac 应用程序。该应用程序在左侧有一个公共源视图,在右侧有一个详细视图,这是整个窗口的主要部分。

这就像主从关系,但源视图中的每个元素都需要另一个详细视图。事实上,我已经为源视图中的每个元素设计了一个特定的 NSViewController。

如果我在这些 NSViewController 之间切换,这意味着如果我在源视图中选择另一个元素,我会删除当前视图并添加新选择的 NSViewController 的视图。每次我更改 NSViewController 时,它的状态都会丢失。当用户回到那个 NSViewController 时,他必须重新开始。

我现在的问题是:如何保存 NSViewController 的状态,以便我可以在它们之间切换而不会丢失其状态,并且可以继续我离开的地方?

4

2 回答 2

0

关于您的问题的两个注意事项:

  • 将模型数据保存在模型类中。这意味着您始终可以重新创建视图控制器并设置其表示的对象,前提是模型类保留了通过视图控制器所做的更改。当您需要实例化视图控制器时,将其表示的对象设置为模型类(的表示)。

  • 从父视图中移除视图时,不一定需要释放其对应的视图控制器。相反,您可以在窗口控制器/应用程序委托中保留对所有视图控制器的强引用,因此实际上不会丢失任何状态。

于 2011-06-02T21:21:37.210 回答
0

使用NSArchiver. 在您的 dealloc/init 方法中实现归档/取消归档,并将每个视图控制器的状态存储在以该类命名的文件中(如果每个视图控制器策略有一个项目)。否则想一些简单的命名约定并使用它。

于 2011-06-02T20:08:56.377 回答