1

私の目的は、マップとテーブルビューという 2 つの異なる方法でディーラーの場所を表示することです。

DealersMapViewController と DealersListViewController の 2 つの子ビュー コントローラーを含むコンテナー ビュー コントローラー (DealersViewController) があります。ユーザーは、ナビゲーション バーに配置された UISegmentedControl を使用して VC を切り替えることができます。マップ アノテーションまたはテーブルビュー セルをタップすると、DealersDetailViewController がプッシュされます。

切り替えは既に実装されており ( Changing view controller when Segmented Control changesのコードを使用)、詳細のプッシュと同様に正常に動作しているようです。

改善したいのは、コンテナと子の間のデータの流れです。ディーラーの場所はインターネットから親でダウンロード (JSON) され、完了すると NSArray *locations プロパティがマップ VC とリスト VC の両方に設定されます。この配列には、AFNetworking によって自動的に作成されたディクショナリ オブジェクトが含まれ、それぞれにロケーション データが含まれます (各ロケーション ディクショナリには、MKAnnotation プロトコルに準拠するタイトル、サブタイトル、緯度、経度だけでなく、画像や説明などの他のものも含まれます)。

私の質問は、コンテナー VC と両方の子 VC が位置データの構造について「同意」していることを確認するにはどうすればよいですか? 理論的には、誰かが別の子ビュー コントローラーを開発してコンテナーに追加し、たとえばコレクション ビューでディーラーの場所を表示したい場合、どのようにしてデータを期待するかを正式に知ることができます。Apple は次のように述べています。子に location プロパティを宣言させることはできますが、配列には何でも含めることができます…

親が子のデータソースになる可能性はありますか? 私はまだこのアプローチを試していません。

私はおそらく物事を複雑にしすぎていますが、私の目的は、再利用可能なコンポーネントを適切に作成する方法を学び、カスタム プロトコル/デリゲートやデザイン パターン全般などを使用して練習することでもあります。

ありがとう。

4

1 に答える 1