Ios UICollectionView:显示相互引用的不同单元格,Swift 3.0

Ios UICollectionView:显示相互引用的不同单元格,Swift 3.0,ios,swift,uicollectionview,uicollectionviewcell,Ios,Swift,Uicollectionview,Uicollectionviewcell,要求: 我目前正在开发一个有趣的配方应用程序,它利用UICollectionView以与UITableView相同的方式运行,也就是说,它只是一个列表 当屏幕加载时,用户将看到与特定“配方”相关的单元格。每个单元格都有一个显示配方名称的标签和一个“添加配料”按钮 Ex 食谱:“鸡肉帕尔玛干酪”[添加配料] 食谱:“蔬菜煎蛋饼”[添加配料] 食谱:“虾炒饭”[添加配料] 添加“配料”时,我希望在与其相关的配方单元格下显示一个单独的单元格,该单元格仅包含一个UILabel。前// 食谱:“鸡肉

要求:

我目前正在开发一个有趣的配方应用程序,它利用
UICollectionView
以与
UITableView
相同的方式运行,也就是说,它只是一个列表

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

Ex

  • 食谱:“鸡肉帕尔玛干酪”[添加配料]
  • 食谱:“蔬菜煎蛋饼”[添加配料]
  • 食谱:“虾炒饭”[添加配料]
添加“配料”时,我希望在与其相关的
配方单元格
下显示一个单独的单元格,该单元格仅包含一个
UILabel
。前//

  • 食谱:“鸡肉帕尔玛干酪”[添加配料]
  • 成分:“8盎司鸡胸肉
  • 食谱:“蔬菜煎蛋饼”[添加配料]
  • 食谱:“虾炒饭”[添加配料]
问题:

我在
cellForItemAt indexPath
中很难想出实现这一点的逻辑,我也不确定逻辑本身是否足以解决这个问题。我已经为“配方”和“配料”创建了自定义单元格“如果不是
UIKit
对象的正确结构,则需要输入控制流应该如何实现,以使其正确执行


感谢您的输入。

保留您要显示的项目列表(例如,以数组形式)。在数据源方法中,您总是引用该列表。因此,当询问项目数时,返回该列表的计数,在cellForIndexPath中填充单元格时,从该列表中获得单元格标题


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

添加UI图像。按照您的结构:我的UICollectionView需要显示“配方”列表,因此我应该创建一个“配方”数组。但是,根据用户的活动,每个配方可能添加或不添加“成分”。因此,我的配方模型将有一个可选的成分数组,或者只是一个实例化的成分空数组。1) numOfItemsInSect将如何返回食谱数量及其成分(如果有)。2) 您对cellForItem的逻辑有何建议,即选择合适的单元格来降低dequeReusableCell?简单方法:
[[“类型”:“配方”、“名称”:“鸡肉帕尔马干酪”]、[“类型”成分、“名称”:“8盎司鸡胸”]、[“类型”:“配方”、“名称”:“蔬菜煎蛋饼”]等]
。只需返回numofitemsinssect中的计数。更复杂的是:
[“名称”:“鸡肉帕尔玛干酪”,“配料”:[“8盎司鸡胸”,“4盎司帕尔玛干酪”],[“名称”:“蔬菜煎蛋”,“配料”:[]]
然后通过在数组上循环并将每个配料数组计数添加到总数中进行计数。也可以将每个配方作为一个部分,将名称放在标题中,将配料放在单元格中。可能使用struct而不是dictionary