我有一个包含类别列表的UitableView(在此示例中,体育类型列表,即水和陆地上的列表)
此表中的每个单元格都有与嵌套UicollectionView中显示的运动类型相关的运动列表。例如,水性将有冲浪和游泳。
思考Netflix-带有水平滚动子类别的垂直滚动类别。
这是示例JSON(请注意,所示的JSON只是为了描述结构。我实际上已将其存储在RealMDB中)
{
"category": [
{
"title": "Sport Listings",
"category_content": [
{
"title": "Water Based",
"category_content": [
{
"title": "Surfing"
}, {
"title": "Swimming"
}, {
"title": "Snorkelling"
}, {
"title": "Tombstoning"
}
]
},
{
"title": "Land Based",
"category_content": [
{
"title": "Football"
}, {
"title": "Rugby"
}
]
}
]
}
]
}
我有两个单元格("基于水的"one_answers"陆基")正确填充了表为每个集合视图委托设置文本。
如果我只是将每个表行的集合视图计数设置为一个随机值,则获取每个单元文本以显示行索引,它将显示正确的索引。我这样做是为了消除任何布局问题。
有人有任何指针吗?从我已经看到的示例中,嵌套的UicollectionView计数是硬编码的,而不是与委托内容(相同图像/文本)
相同的动态。我没有发布任何代码,因为我试图弄清楚它已经变得完全混乱。如果需要,我可以将其剥离并放在这里。
在我看来,只有在要利用其主要功能时才能使用tableview:回收利用以支持大量单元格,以及其他功能,例如搜索,字母表,等等。我宁愿自己使用垂直堆栈视图并自己管理收集视图,而不是将它们放入单元格中。我想,当您滚动时,您的收集视图会回收出来 - 因为相同的单元格实例将被重复使用 - 但是现在,当您向下滚动时,它会有错误的收集视图。
如果您在此表视图中只有少于10行,我将使用垂直方向堆栈视图。您不需要细胞或回收利用。当我以前使用表视图作为垂直布局时,我遇到了状态清理和跨再生单元格的元素出血问题。
我可能会将每个集合视图的代表分为单独的类。
回答您的主要问题:如果您仍然想使用tableview,请将重复使用符设置为每行唯一值,因此不会进行回收。并管理一系列数据源对象,以分配您的tableView方法的CellForrow中的每个集合视图。
另一个选项是让每个电池组合每个集合视图的数据源 - 因此,通过制作一个自定义的UaithitViewCell子类,它可以用作数据源和UI容器,供您收集视图。然后将通用数据模型注入CellForrow方法中(对于所有类型的收集视图,无论数据类型如何)。
我将数据源保留为单独的对象,并将其注入单元格,因为对我来说,单元格应该只是一个" shell" - 一个UI布局元素,不应保留数据源的详细信息(那数据源也可以在其他地方重复使用,而不仅仅是该单元格)