現在、すべてのステップ モデル クラスが基本の WizardStep クラスのサブクラスである、ウィザードのような機能をアプリ用に開発しています。今は 3 つしかありません (ただし、常に 12 未満になります)。
実際のウィザード NSView をバックエンドするための WizardControllerがあり、UI でこのポリモーフィックな WizardStep クラスを管理する方法の問題に直面しています。ステップのサブクラスごとに Cocoa バインディングを幅広く使用することに注意してください。
次の 3 つの解決策が思い浮かびました。
1) WizardStep のタイプごとに個別の NSViewを作成し、同数の NSObjectController を作成して、それらの間で特定のサブクラス プロパティをバインドします。ユーザーがステップに移動すると、NSObjectController のコンテンツが入力され、ウィザード ビューに (もちろんサブビューとして) ビューが表示されます。
2) WizardStep のタイプごとに個別の NSView を作成し、単一の NSObjectController を作成して、すべてのサブクラス プロパティをそれにバインドします (コントローラ コンテンツのタイプによっては、それらの一部が使用できなくなります)。ユーザーがステップに移動すると、NSObjectController のコンテンツが入力され、ウィザード ビューに (もちろんサブビューとして) ビューが表示されます。
3) WizardStep の各タイプごとにタブを持つ NSTabView を作成し、単一の NSObjectController を作成 (またはウィザードの ViewController を使用) し、すべてのサブクラス プロパティをそれにバインドします (解決策 2 のように、それらのいくつかは使用できなくなります)。ユーザーがステップに移動すると、NSObjectController のコンテンツを入力し、特定のステップ タイプに応じてタブ ビューの selectedIndex プロパティを設定します。
解決策 1) が最も正確で洗練されているように感じますが、やり過ぎになる可能性があるのではないかと思います(多くの NSObjectController、多くの NSView)。解決策 2) と 3) は、私にはばかげているように感じます (バインディングが利用できないため)。
進め方について何かアドバイスはありますか?
みんなありがとう、ピーター