2017-01-30 12 views
1

要件:UICollectionView:、互いを参照する異なるセルを表示スウィフト3.0

私は現在のように、UITableView、すなわち同じように機能するためにUICollectionViewを利用している楽しいレシピアプリケーションに取り組んでいます単なるリストです。

画面が読み込まれると、特定の「レシピ」に関するセルが表示されます。各セルには、レシピ名を表示するラベルと「成分を追加」ボタンがあります。

  • レシピ: "チキンパルメザン"
  • レシピ[成分を追加]: "野菜オムレツを" [追加成分]
  • レシピ: "エビチャーハン" [成分を追加]

「成分」が添加された場合、UILabelを含む別のセルをの下に表示したいは、それが新しい成分と関連しています。例//

  • レシピ: "チキンパルメザン" [成分を追加]
  • 成分: "8オンスチキン乳
  • レシピ: "野菜オムレツ"[成分を追加]
  • レシピ:" エビチャーハン「

[成分を追加します]問題:

私はかなりハードTIを抱えています私はcellForItemAt indexPathにこれを実装するロジックを考えていますが、論理だけではこの問題を解決するには十分ではありません。私はすでに "レシピ"と "成分"の両方にカスタムセルを作成しており、これを正しく実行するには、制御フローを実装する方法を入力したい場合は、UIKitオブジェクトの正しい構造でなければなりません。

ありがとうございます。

+0

あなたのUIイメージを追加します。 –

答えて

1

表示したい項目のリスト(例:配列)を保存します。 DataSourceメソッドでは、常にそのリストを参照します。だから、あなたがそのリストのカウントを返す項目の数を尋ねられたら、cellForIndexPathでセルを設定すると、そのリストからセルのタイトルが得られます。

セルを追加する場合は、まずリストに項目を追加します。次に、CollectionViewのinsertItems(at :)を呼び出します。これにより、cellPathIndexPathの呼び出しがトリガーされ、indexPathが呼び出されたときに新しいセルを準備する必要があります。リスト内の項目に「タイプ」と「タイトル」が含まれている辞書を使用するなど、アイテムごとに表示するセルのタイプを把握するだけで済みます。

+0

あなたの構造に従う: 私のUICollectionViewは "レシピ"のリストを表示する必要があるので、 "レシピ"の配列を作成する必要があります。 ただし、各レシピには、ユーザーのアクティビティに応じて、「成分」が追加されている場合と追加されていない場合があります。だから私のレシピモデルは、オプションの成分の配列、あるいは単純にインスタンス化された空の配列の成分を持っています。 1)numOfItemsInSectは、レシピの数とその成分(もしあれば)の両方を返します。 2)dequeReusableCellのダウンキャストに適切なセルを選択することに関連する、cellForItemのロジックについて、あなたの提案は何ですか? – iMoment

+0

シンプルなアプローチ:["["タイプ ":"レシピ "、"名前 ":"チキンパルメザン "]、[タイプ "成分 "、"名前 ":" 8ozチキンブレスト "]、["タイプ "レシピ "、"名前 ":"野菜オムレツ "]など。] numOfItemsInSectのカウントを返すだけで、より洗練された:' ["name": "Chicken Parmesan"、 "ingredients":["8oz Chicken Breast" "4oz Parmesan"]]、["名前": "Vegetable Omelette"、 "ingredients":[]]] '次に、配列全体をループし、各成分の配列数を合計して数えます。ヘッダーとセルの成分の名前。辞書の代わりに構造体を使用する –

関連する問題