Objective-C 从 xib 将 NSView 重置为初始状态?

Objective-C Reset NSView to Initial state from xib?

我有一个带有按钮和状态的 NSView,这些按钮和状态会在程序执行过程中发生变化。但是有没有办法破坏那个视图和 "respawn" xib 中的原始视图?我可以隐藏和显示 NSView,但是如何销毁并重新创建特定视图或将其恢复到初始状态呢?该视图中的每个组件在哪里 "reset"?可以这样做吗?

完成您所要求的方法是为视图创建一个单独的 XIB。它的所有者将是您的视图控制器 class(NSViewController 的子class)。您将分配 class 的一个实例并使用 NIB 名称对其进行初始化。当您第一次请求它的 view 属性 时,将使用视图层次结构的新实例加载 NIB。然后,您将在超级视图的子视图中用新视图替换旧视图,如果您使用自动布局,请适当设置约束。

一步添加视图控制器 class 和视图 XIB 的一种简单方法是执行文件 > 新建 > 文件 > Cocoa class。将 "Subclass of" 组合框设置为 NSViewController。输入 class 名称。检查 "Also create XIB file for user interface"。单击“创建”以及您要将文件保存到的位置。

但是,综上所述,视图不应该保持状态,它应该反映状态。模型应该保持状态,控制器层应该配置视图以反映模型,包括在模型更改时更新它。所以,如果你做对了,你通常应该重置你的模型状态,这应该会重置你的视图。