0

ほとんどの場合画面に表示されるメインビューが1つあるアプリケーションを作成したいと思います。ビューの一部は一定で、メインコントロールが表示されます。ただし、アプリの状態に応じて特別なサブビューがあります。アプリの状態は、特別な「状態オブジェクト」で表示されます。一度にアクティブにできる「状態オブジェクト」は1つだけですが、ロジックが大きく異なる可能性があるため、(この特別なサブビュー内で)異なるユーザーインターフェイスを表示する必要があります。

明らかに、現在の状態オブジェクトのタイプを分析することで、メインビューのViewControllerで処理できます。状態オブジェクトが持つことができるすべての可能なクラスに固有の多くのコードを使用してbiiiigスイッチを作成し、新しい状態オブジェクトサブクラスを追加するたびにそこにコードを追加できます...しかし、これは良いアーキテクチャのようには聞こえません私に。代わりに、状態オブジェクト、またはそれらに固有のさまざまなViewControllerがこの特別なビューを制御するようにします。残念ながら、ビュー、viewController、デリゲートで少し迷子になり、これをどのように正確に達成できるかわかりません。

4

3 に答える 3

1

これらのスレートビューで多くのロジックを処理する必要がある場合は、それらをビューコントローラーとして作成し、セッション102-UIViewController封じ込めの実装に示すように、コンテナーアプローチを使用して必要なときにメインビューコントローラーに追加することをお勧めします。基本的にこのように:

[self addChildViewController:childViewController];
[childViewController didMoveToParentViewController:self];
[self.view addSubView:childViewController.view];

この方法をトランジションアニメーションに使用することもできます。transitionFromViewController: toViewController: duration: options: animations: completion:

于 2012-08-08T18:51:44.103 に答える
0

ビューコントローラとUI(XIB)は2つの異なるものであることを覚えておくことが重要です。さまざまなサブビューのロジックを処理するコントローラーを実装し、NibNameでinitを使用して、コンテキストに基づいてコントローラーのそのインスタンスを別のUIにバインドできます。

これにより、制御ロジックを1回記述して、必要な数のさまざまなUIエクスペリエンスを生成できます。XIBはすべて、一元化されたIBOutletのセットに結び付ける必要があり、すべての設定が完了します。サブビューがアプリの全体的なコンテキストにまだ存在していることを考えると、サブビューには類似性の大きな領域がある可能性があります。潜在的に多くのXIBに対する1つのViewControllerのこの戦略は、これらの方針に沿った開発を簡素化するのに役立ちます。

幸運を。

于 2012-08-08T18:58:14.267 に答える
0

それぞれの異なるサブビュータイプは、独自のビューが関連付けられた個別のビューコントローラです。

于 2012-08-08T19:32:00.563 に答える