1

私は、1 つのビュー コントローラーが 3 つのビューを含む責任を持つアプリに取り組んでいます。

  • このビューのそれぞれには、いくつかの測定値のデータソースがあります。
  • ビューは同期しています -> 1 つのビューの 1 つのポイントを選択すると、他のビューと類似しています。
  • ユーザーは、さまざまなオプションを選択して、各ビューに表示できます (例: 3 つのビューと 5 つのビュー オプション。

この状況で取るべき私の現在のアプローチは次のとおりです。

  • コンポーネント プロトコルを作成します。すべてのビューが準拠する必要があります。
  • たとえば、コンポーネントは、選択の詳細を含む UICollecytionView です (これは他のコンポーネントで行われます)。
  • コンポーネントにはビュー プロパティがあり、コントローラーによってビュー コントローラーのコンテナー ビューに動的に追加されます。
  • 可視ビュー コントローラは同期マネージャによって同期されます。これには、可視ビューがビュー コントローラによって登録されます。
  • デリゲートはほとんどがコンポーネントに実装されます -> 一部のイベントはコンポーネント デリゲートで公開されます (同期マネージャーが他のビューを同期できるように、ユーザーが選択したものなど)。
  • ビュー コントローラーは、ユーザーが選択した測定バッチ (別のビュー コントローラーの特定の日のバッチなど) からデリゲートを取得し、必要なデータをロードして同期マネージャーをトリガーし、選択されたバッチを各可視コンポーネントに提供します。
  • 次に、コンポーネントはバッチを提示する役割を果たします (以前のバッチでポイントが選択されていた場合は、新しいバッチに関連するポイントをロード/検索するだけでなく)。

このアプローチは正しいですか?ビュー コントローラーに各コンポーネントのコードを配置すると (そして最初のアプローチではそうでした)、その意味と明確さが損なわれます。

View Controller Containment についても読みました(したがって、正しく理解できれば、オプションごとにView Controllerを作成し、View Controller内でその要素を処理し、それらを画面に表示されるビューに交換することを意味します)。次に、ユーザーの選択により、オプションの具体的な選択を担当するView Controllerの交換がトリガーされますが、同期は親View Controllerによって行われるのが最善です(私は正しいです)。

私が十分に明確であることを願っています...説明が曖昧であることは承知していますが、主なアイデアは理解できるはずです。

再開:

  • どのアプローチが良いですか?コンポーネントは、他のView Controllerなどにかなり動的に追加できる、再利用可能な優れたコンポーネントのようです。
  • これらの各アプローチの落とし穴があれば、それは何ですか?
4

0 に答える 0