2017-01-30 73 views
1

要求:UICollectionView:相互引用显示不同的细胞,雨燕3.0

我目前的工作是利用UICollectionView以同样的方式来充当UITableView一个有趣的配方应用,即作为只是一个列表。

当屏幕加载时,用户将看到与特定“配方”有关的单元。每个单元格都有一个标签来显示配方名称和一个“添加配料”按钮。

防爆

  • 方药: “鸡巴马”[添加成分]
  • 方药: “蔬菜煎蛋”[添加成分]
  • 方药: “虾炒饭”[添加成分]

当添加“成分”时,我想要一个单独的单元格,它只包含一个UILabel,将显示在Recipe cell,它与新的成分有关。防爆//

  • 方药: “鸡巴马”[添加成分]
  • 成分: “8盎司鸡胸
  • 方药: ”蔬菜煎蛋“[添加成分]
  • 方药:” 虾炒饭“[添加成分]

问题:

我有一个相当艰难TI我想到了在cellForItemAt indexPath中实现这个逻辑的逻辑,我也不确定单独的逻辑是否足以解决这个问题。我已经为“配方”和“原料”创建了自定义单元,并且希望输入如何实施控制流程,如果不是正确的结构UIKit对象,以使其正确执行。

谢谢您的输入。

+0

添加您的UI图像。 –

回答

1

保留要显示的项目列表(例如,在数组中)。在DataSource方法中,您始终引用该列表。因此,当询问您返回该列表的计数数量时,在cellForIndexPath中填充单元格时,将从该列表中获取单元格标题。

现在,当您想要添加单元格时,首先将一个项目添加到列表中。然后在CollectionView上调用insertItems(at :)。这将触发对cellForIndexPath的调用,您必须在调用indexPath时准备新单元。您只需跟踪每个项目应显示的单元格类型(例如,使用“type”和“title”作为列表项目的字典)。

+0

遵循你的结构: 我的UICollectionView需要显示“食谱”列表,所以我应该制作一个“食谱”数组。 但是,根据用户的活动,每个食谱可能会或可能不会添加“成分”。所以我的食谱模型会有一个可选的成分数组,或者只是一个实例化的成分数组。 1)numOfItemsInSect将如何返回配方及其配料的计数(如果有的话)。 2)你对于cellForItem的逻辑有什么建议是关于选择正确的cell到downque的dequeReusableCell? – iMoment

+0

简单的方法:[[“type”:“recipe”,“name”:“Chicken Parmesan”],[“ ”成分“,”名称“:”8oz鸡胸肉“],[”type“食谱“,”名称“:”蔬菜煎蛋“]等]'。只需返回numOfItemsInSect中的计数更复杂:'[[”名称“:”鸡巴马“,”配料“:[”8盎司鸡胸肉“, “4oz Parmesan”]],[“name”:“Vegetable Omelette”,“ingredients”:[]]]'然后通过循环数组并将每个配料数组添加到总数来计数。头部中的名称和单元格中的成分。可能使用struct而不是字典 –