2012-05-06 13 views
1

私は別のinputViewサブビューを持つ単一のWizardViewControllerを使用したいと思います。 WizardViewControllersearchCriteriaを共有し、各ステップは、その特定のinputViewの入力に応じて基準を追加することで、それぞれの新しいステップに沿って通過します。オブジェクト構造は

私が直面しています問題は、私は、入力/コントロールのWizardViewController受け入れて、異なるタイプを再利用できるように、私のオブジェクト/ビューを構築する方法です。例えば、私は、WizardViewModelTypeの各タイプに対応するUIView *inputViewのようなメンバーを持つenum wizardViewModelTypeのメンバーを持つWizardViewModelを使用し、必要な異なるinputViewに対応するカスタムUIViewサブクラスを作成することを考えました。 Interface Builderで必要に応じてアウトレットを接続します。問題は、この道を踏み外すとクラス間の依存関係が多くなり、基本的にロジックをWizardViewControllerから分離するという目的を破ってしまうと私は信じています。さらに、inputViewの中には、Webサービスから可能な値を取得する必要があります。これは、ViewModelが処理しなければならないものであり、さらにロジックを破るものです。おそらく、入力ビューの種類ごとに別々のViewControllerが必要ですか?それとも、私はまったく間違った方法でこれについて考えていますか?

答えて

2

通常、それを行うための正しい方法は、各UIViewのためのViewControllerを持つことです。あなたのアプリケーションのロジックはビュー上にあるべきではなくviewController上にあり、segues(ios 5の場合)を使ってデータを共有することができます。また、ios 4以下の他のメソッドがあると確信しています。

UIViewController間でコードを共有したい場合は、ウィザードを作成する方法はナビゲーションコントローラに埋め込み、ナビゲーションコントローラスタックの次のviewControllerを押すことです。

ビューコントローラ間でコードを共有したい場合は、私はあなたのビューコントローラクラスでそれを行う必要があるとは思いません。

1)は、基本クラスを記述します:基本的に、私はそれを行うために、2つのオプションを考えるだろう、基本クラスは、この基本クラスを拡張することができのUIViewControllerとあなたのUIViewControllersを拡張する必要があります。

2)共通コードを別のクラスに抽出します(該当する場合はより良い)。共通コードを共有する別のクラスを作成し、ビューコントローラに注入します。