我目前正在为我的应用程序开发一个类似向导的功能,其中每个步骤模型类都是基础 WizardStep 类的子类。我现在只有三个(但他们总是少于十二个)。
我有一个 WizardController 来支持实际的向导 NSView,我现在面临如何在 UI 中管理这个多态 WizardStep 类的问题。请注意,我将为每个步骤子类广泛使用 Cocoa 绑定。
想到了三个解决方案:
1) 为每种 WizardStep 类型创建单独的 NSView(s) ,然后创建相等数量的 NSObjectController 并在它们之间绑定特定的子类属性。当用户进入一个步骤时,我将填充 NSObjectController 的内容并在向导视图中显示视图(当然,作为子视图)。
2) 为每种 WizardStep 类型创建单独的 NSView(s) ,然后创建单个 NSObjectController 并将所有子类属性绑定到它(其中一些将不可用,具体取决于控制器内容的类型)。当用户进入一个步骤时,我将填充 NSObjectController 的内容并在向导视图中显示视图(当然,作为子视图)。
3)为每种 WizardStep 类型创建一个带有选项卡的 NSTabView ,然后创建一个 NSObjectController(或使用向导 ViewController)并将所有子类属性绑定到它(其中一些将不可用,如解决方案 2 中所示)。当用户进入一个步骤时,我将填充 NSObjectController 的内容并根据特定的步骤类型设置选项卡视图的 selectedIndex 属性。
我觉得解决方案 1) 是最正确和最优雅的,但我担心它可能是矫枉过正(许多 NSObjectController,许多 NSView)。解决方案 2) 和 3) 对我来说很愚蠢(因为绑定不可用)。
关于如何进行的任何建议?
谢谢大家,彼得